C3646 和 C4430 由于头文件层次结构?
C3646 and C4430 due to header file hierarchy?
我遇到了两个编译错误:C3646 和 C4430。让我告诉你:
我指的是这个头文件:
Timer.h
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
但这让事情变得更糟(我相信这个文件已经通过其他包含条目包含)。
为什么编译器需要覆盖说明符? (据我所知不需要它们,我只是将 属性 添加到 class?)
在其他使用的地方,在对应的class的构造函数中(头文件中也有)填入该值。这对这个问题有什么影响吗?
供您参考:Singleton
用于实现相应的设计模式。
补充说明:这个问题(乍一看)似乎与命名空间无关。
同时我已经了解了问题的根本原因:
如前所述,在源代码(头文件)中,写着:
Timer getDebuggerTimer;
Visual Studio的编辑器接受了这行源代码(Timer
字下没有红波),同时按下F12
进入文件Timer.h,其中定义了提到的 class。
但是,编译器似乎并不同意:编译器在头文件"Timer.h"中没有找到Timer
class的定义,而是说identifier not understood
, 他给出了那个奇怪的编译信息。
我是怎么发现的?
我已将 Timer getDebuggerTimer
替换为 BlablaTimer getDebuggerTimer
。这样做时,编辑器显示提示 identifier "BlablaTimer" is undefined
但编译器继续给出相同的编译器错误 C3646 和 C4430。
我现在正在进一步挖掘以了解如何解决这个问题,但我确实相信编译器不应将简单的 undefined identifier
显示为一些奇怪的 unknown override specifier
。
我遇到了两个编译错误:C3646 和 C4430。让我告诉你:
我指的是这个头文件:
Timer.h
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
但这让事情变得更糟(我相信这个文件已经通过其他包含条目包含)。
为什么编译器需要覆盖说明符? (据我所知不需要它们,我只是将 属性 添加到 class?)
在其他使用的地方,在对应的class的构造函数中(头文件中也有)填入该值。这对这个问题有什么影响吗?
供您参考:Singleton
用于实现相应的设计模式。
补充说明:这个问题(乍一看)似乎与命名空间无关。
同时我已经了解了问题的根本原因:
如前所述,在源代码(头文件)中,写着:
Timer getDebuggerTimer;
Visual Studio的编辑器接受了这行源代码(Timer
字下没有红波),同时按下F12
进入文件Timer.h,其中定义了提到的 class。
但是,编译器似乎并不同意:编译器在头文件"Timer.h"中没有找到Timer
class的定义,而是说identifier not understood
, 他给出了那个奇怪的编译信息。
我是怎么发现的?
我已将 Timer getDebuggerTimer
替换为 BlablaTimer getDebuggerTimer
。这样做时,编辑器显示提示 identifier "BlablaTimer" is undefined
但编译器继续给出相同的编译器错误 C3646 和 C4430。
我现在正在进一步挖掘以了解如何解决这个问题,但我确实相信编译器不应将简单的 undefined identifier
显示为一些奇怪的 unknown override specifier
。