我正在編寫一些仿真軟件,用C++編寫。目前,當試圖構建我的代碼時,我收到了9個編譯錯誤,都抱怨我剛剛添加的三行代碼。這些線是聲明中PublisherModule.h
:C++編譯錯誤C4430,C2653,C2146,C2143
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);
...
}
錯誤編譯器是給我的是:
error C2653: 'Types': is not a class or namespace name
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
error C2146: syntax error : missing ';' before identifier 'ModeData'
error C2143: syntax error : missing ';' before '*'
我拿到總error C4430
4次,而其他錯誤都各一次。他們都在抱怨我添加到.h
文件中的行。有谷歌的第一個錯誤,並在SO:Compiler error C2653: not a class or namespace name遇到這個答案,它會出現,原因是在頭文件中的循環依賴... ...
但是,這不是在這裏發生,只要我可以告訴......有什麼其他的原因,我可能會得到這個編譯錯誤,什麼阻止了我的代碼建立?
當我將鼠標懸停我的光標移到我在.h
文件已經添加了第一行顯示的信息,Types::ModeRecord
是:
Error: a class-qualified name is required
源代碼中的哪一行會得到錯誤消息'error C2653:'SIFFTypes':不是類或名稱空間名稱? – wimh
對不起,現在我的問題有錯字。它是'.h'文件中的'Types :: ModeRecord;'之上的行。該特定行實際上只是一個評論 - 它上面沒有可執行代碼。 – someone2088