我正在使用 c++ 开发一个项目,但我不知道出了什么问题。我写了 4 节课,工作期间一切看起来都很好(在 Visual Studio 2010 下)。VS“看到”了所有定义,我可以使用自动填充和建议,但是当我尝试编译项目时,它突然失明了。就像我没有包含标题或其他东西(我做了)。奇怪的是在 VS 上使用这些类没有问题(我可以 ctrl+space 来提示、属性和方法列表以及所有这些东西)但是当我尝试编译它时说“ClassName”不是一种类型。以下问题的快速示例:
ProButton.cpp:
#include "ProButton.h"
using namespace pGUI;
ProButton::ProButton( ... )
: ProControl( ... )
{
...
}
ProButton.h:
#ifndef __PRO_BUTTON__
#define __PRO_BUTTON__
#include <string>
#include "ProControl.h"
namespace pGUI
{
class ProButton :
public pGUI::ProControl
{
public:
//attributes
...
public:
//methods
...
};
}
#endif
但编译器说: 错误 291 错误 C2653: 'ProButton' : is not a class or namespace name for this line in ProButton.cpp: ProButton::ProButton( ... )
它还说:错误23错误C2039:'ProControl':不是'pGUI'的成员
错误24错误C2504:'ProControl':基类未定义
以及整个项目的所有类似错误。我不知道出了什么问题。看起来我的 VS 坏了:D
当然那些 (...) 意味着那里有代码,只是现在不那么重要。我可以将所有解决方案上传到某个地方,它会有所帮助。
编辑//
关于命名空间,所有头文件(类声明)都在命名空间中定义:
namespace pGUI{
class ProClass
{
};
}
这些类的所有定义(在 ProClass.cpp 中)都在使用:
using namespace pGUI;
一开始。
我认为问题在于包含文件的顺序。我不确定这应该怎么做。到目前为止,我有 4 个课程:
ProGUI 类:
- 有一个指向 ProContainer 的指针
- 包括:ProContainer 和 ProControl
类 ProContainer:
- 指向:ProGUI 和 ProControl
类 ProControl:
- 有一个指向 ProContainer 的指针
- 包括 ProButton
- 是 ProButton 的基类
ProButton 类:
- 是 ProControl 的子类
这些类也使用 irrlicht 库,我不确定在哪里包含它。我之前将它包含在我的主文件中#include "ProGUI.h"
。这也是 main 中唯一包含的内容。图形用户界面.h 。
//编辑 2 -> 已解决
这是包含问题。我需要重新考虑我的包含顺序并添加一些前向声明。无论如何,这一切似乎都很奇怪,我花了很多时间才弄清楚。谢谢帮助。:)