我在创建结构函数链接时遇到问题。
错误1错误C2143:语法错误:缺少';'在'*'之前(Config.h) 错误2错误C4430:缺少类型说明符 - 假定为int。 (config.h中)
Library.h
#include "Config.h"
#include "Struct.h"
Struct.h
struct COMMANDSTRUCT
{
char Name[50];
int Enable;
int Price;
};
Config.cpp
#include "Library.h"
COMMANDSTRUCT* Config::getIndex(std::string Text)
{
for (int i = 0; i < m_COMMANDSTRUCT.size(); i++)
{
if (strcmp(m_COMMANDSTRUCT[i].Name, Text.c_str()) == 0)
{
return &m_COMMANDSTRUCT[i];
}
}
return NULL;
}
的config.h
class Config
{
public:
static COMMANDSTRUCT* getIndex(std::string Text);
static std::vector<COMMANDSTRUCT> m_COMMANDSTRUCT;
};
使用
COMMANDSTRUCT * lpCommand = Config::getIndex("post");
答案 0 :(得分:1)
我认为它可能是&#34; Library.h&#34;
中#includes的顺序Library.h - &gt;包括Config.h(Config类)THEN Struct.h(COMMANDSTRUCT) Config.h - &gt;取决于COMMANDSTRUCT
所以Config.h必须是#include Structus之后的
答案 1 :(得分:0)
您需要包含struct
声明,以便其他文件知道该类型是什么。
#include "struct.h" // or whatever you named the file
这必须在Func.h
中完成,然后应该包含在Func.cpp
中,以便两个文件都可以访问该声明。