gpt4 book ai didi

C++编译错误C4430、C2653、C2146、C2143

转载 作者:行者123 更新时间:2023-11-28 00:12:07 25 4
gpt4 key购买 nike

我正在开发一些用 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 的 publish() 函数中。 cpp 文件:

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 '*'

我总共得到 4 次 error C4430,其他错误各一次。他们都在提示我添加到 .h 文件中的行。谷歌第一个错误,然后在 SO 上找到这个答案:Compiler error C2653: not a class or namespace name , 看起来原因是头文件中的循环依赖...

但据我所知,这并没有发生...是否有任何其他原因导致我可能会遇到此编译错误,是什么阻止了我的代码构建?

当我将光标悬停在我添加到 .h 文件 Types::ModeRecord 的第一行上时显示的消息是:

Error: a class-qualified name is required

最佳答案

根据我的观察,这是您发布的代码的缩写版本:

class PublisherModule [... bunch of base classes...]
{

public:
Types::ModeRecord;
};

你认为这条线有什么作用??
Types::ModeRecord;

它不是[TypeName] [VariableName];的形式(例如int i;)
它看起来不像方法原型(prototype)(例如 void foo(int i);)
它不是类型定义。
它看起来不像任何普通的 C++。

认为它在做什么?

关于C++编译错误C4430、C2653、C2146、C2143,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32483925/

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