How to use an enum declared somewhere in my header file?
我是C ++的初学者,自昨天开始遇到此问题。
我有两个头文件:
'Builder.hpp',其中包括一些枚举和结构的声明和定义:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #ifndef BUILDER_HPP #define BUILDER_HPP #ifdef _DEFAULT_INCLUDES #include <AsDefault.h> #endif #include"../EcoLibs/EcoComLib/OpcUaCom.hpp" #include"LineCoordEngine.hpp" //Builder class help types enum BuildOpcUaType_enum { //Some stuff }; enum BuildVariableTypes_enum { //Some stuff }; struct BuildOpcUaLists_type { //Some stuff }; //Builder class class Builder { public: Builder(); ~Builder(); Machine *BuildOpcUaMachine(char serverUrl[UA_MAX_STRING], BuildOpcUaLists_type *lists, BuildOpcUaType_enum uaType); DataExchanger *BuildDataExchanger(unsigned short int machineIndex, unsigned short int machineTypeIndex); private: void CreateOpcUaList(//stuff); void CreateCharNumber(//stuff); //Private variables declaration }; #endif |
第二个头文件是:" Parser.hpp"。
我想声明一个在'Builder.hpp'中定义的'BuildOpcUaType_enum'类型的变量。 我在" Parser.hpp"中包含了" Builder.hpp",但仍然收到错误消息:
BuildOpcUaType_enum没有命名类型。
Parser.hpp:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | #ifndef BUILDER_HPP #define BUILDER_HPP #include"Builder.hpp" #include <string> using namespace std; struct Attributes{ string name; string value; }; BuildOpcUaType_enum en; class Parser{ private: //Variables: Attributes attributes[10]; unsigned int BufferIds[200]; string connectionStrings[20]; unsigned long int nFileLength, nOpenFileIdent, nXMLReaderIdent; unsigned short int length, noOfOpenedStructs, readListIndex, writeListIndex, readListDestIndex, writeListSrcIndex; string comType, sErrorMessage, sStatusText, sXMLElementName, sXMLElementValue; string structNameAttValues[10]; unsigned int TagId_Read[200]; unsigned int TagId_Write[200]; unsigned short int xmlData[10000]; //Boolean variables: bool isArrayTag, isBufferIdTag, isDatatypeTag, isNameTag, bStart, isTagIdTag; //Constants: string sFilePath; string sDeviceName; //The rest? BuildOpcUaType_enum en; public: Parser(); ~Parser(); }; #endif |
您在两个头文件中的包含保护均为
就目前而言,您实际上并没有包含