gpt4 book ai didi

c++ - 如何使用我的头文件中某处声明的枚举?

转载 作者:行者123 更新时间:2023-11-30 03:19:55 25 4
gpt4 key购买 nike

我是 C++ 的初学者,从昨天开始我就遇到了这个问题。我有两个头文件:“Builder.hpp”,其中包括一些枚举和结构的声明和定义:

#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 没有命名类型。

解析器.hpp:

#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

最佳答案

两个头文件中的 include guard 是 BUILDER_HPP .您需要为每个文件使用一个唯一的文件(这就是为什么它通常是文件名)。

就目前而言,您实际上并未包括 Builder.hpp 中的任何内容,因为 #define BUILDER_HPP发生在 #include "Builder.hpp" 之前在 Parser.hpp所以包括守卫#ifndef BUILDER_HPP计算结果为假。

关于c++ - 如何使用我的头文件中某处声明的枚举?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53296482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com