【发布时间】:2015-09-09 23:54:27
【问题描述】:
我正在开发一些用 C++ 编写的模拟软件。目前,在尝试构建我的代码时,我得到 9 个编译错误,所有这些都抱怨我刚刚添加的三行代码。这些行是PublisherModule.h 中的声明:
class PublisherModule :
public s::Module,
public s::Singleton<PublisherModule>,
public s::Interface,
public s::htmlPage{
public:
...
Types::ModeRecord;
ModeRecord modeData;
ModeRecord *modeDataPtr;
...
};
将这些声明添加到PublisherModule.h 的原因是我可以将以下代码添加到PublisherModule.cpp 文件的publish() 函数中:
Types::ModeRecord ModeData;
Types::ModeStatusRecord *ModeDataPtr = &ModeData;
DataStore->getModeData(*ModeDataPtr);
publish() 函数现在看起来像这样:
void PublisherModule::publishData(void){
...
Types::ModeRecord ModeData;
Types::ModeStatusRecord *ModeDataPtr = &ModeData;
DataStore->getModeData(*ModeDataPtr);
...
}
编译器给我的错误是:
错误 C2653:“类型”:不是类或命名空间名称
错误 C4430:缺少类型说明符 - 假定为 int。注意:C++ 不支持 default-int
错误 C2146:语法错误:缺少 ';'在标识符“ModeData”之前
错误 C2143:语法错误:缺少 ';'在'*'之前
我总共收到了 4 次error C4430,其他错误各一次。他们都在抱怨我添加到.h 文件中的行。谷歌发现了第一个错误,并在 SO:Compiler error C2653: not a class or namespace name 上遇到了这个答案,看来原因是头文件中的循环依赖...
但据我所知,这里并没有发生这种情况...是否还有其他原因导致我可能会收到此编译错误,以及是什么阻止了我的代码构建?
当我将光标悬停在我添加到.h 文件Types::ModeRecord 中的第一行上时显示的消息是:
错误:需要一个类限定名称
【问题讨论】:
-
在源代码的哪一行收到错误消息
error C2653: 'SIFFTypes': is not a class or namespace name? -
抱歉,我的问题中有错字 - 现在已修复。这是
.h文件中Types::ModeRecord;上方的行。该特定行实际上只是一个注释 - 上面没有可执行代码。
标签: c++ compiler-errors