gpt4 book ai didi

c++ - C3646和C4430是否由于头文件层次结构?

转载 作者:行者123 更新时间:2023-12-02 11:13:09 25 4
gpt4 key购买 nike

我遇到两个编译错误:C3646和C4430。让我给你演示:
我指的是这个头文件:
计时器

class Timer {
}
这段源代码工作正常(在头文件中):
#include "Timer.h"
class Something{
Timer timer_;
这段源代码不起作用(在另一个头文件中):
class Something_else : public Singleton<Something_else> {
friend Singleton<Something_else>;
Timer getDebuggerTimer;
我得到的编译错误是上述错误:

C3646 'getDebuggerTime': unknown override specifier

C4430 missing specifier - int assumed.


我试图包括提到的头文件 Timer.h,但这使情况变得更糟(我相信此文件已经通过其他包含条目包含在内)。
为什么编译器期望覆盖说明符? (据我所知不需要它们,我只是在类中添加一个属性?)
在使用它的其他地方,该值填充在相应类的构造函数中(也包含在头文件中)。这对这个问题有影响吗?
供您引用: Singleton用于实现相应的设计模式。
额外说明一下:问题(乍一看)似乎与 namespace 无关。

最佳答案

同时,我了解了问题的根本原因:

如前所述,在源代码(头文件)中写道:

Timer getDebuggerTimer;

Visual Studio的编辑器接受这一行源代码(在 Timer字下没有红色波浪),并且在按下 F12时进入文件Timer.h,其中定义了上述类。

但是,编译器似乎不同意:编译器在头文件“Timer.h”中找不到 Timer类的定义,但是他没有说 identifier not understood,而是给出了奇怪的编译消息。

我是怎么发现的?

我已将 Timer getDebuggerTimer替换为 BlablaTimer getDebuggerTimer。这样做时,编辑器显示提示 identifier "BlablaTimer" is undefined,但编译器继续给出相同的编译器错误C3646和C4430。

我现在正在进一步研究以便知道如何解决此问题,但是我相信编译器不应将简单的 undefined identifier显示为某些奇怪的 unknown override specifier

关于c++ - C3646和C4430是否由于头文件层次结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49025931/

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