gpt4 book ai didi

c++ - VC++ 编译器看不到我的任何命名空间和类

转载 作者:行者123 更新时间:2023-11-30 02:57:35 25 4
gpt4 key购买 nike

我正在用 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”:不是类或命名空间名称对于 ProButton.cpp 中的这一行: ProButton::ProButton( ... )

它还说:错误 23 错误 C2039:“ProControl”:不是“pGUI”的成员
错误 24 error 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 中唯一包含的内容。 ProGUI.h .

//编辑 2 -> 已解决

这是包含的问题。我需要重新考虑我的包含顺序并添加一些前向声明。不管怎样,这一切看起来都很奇怪,我花了很多时间才弄明白。谢谢帮助。 :)

最佳答案

看来您正在使用以下语句:

使用命名空间 pGUI;

就在类声明之前:

class ProControl
{

};

而不是使用以下方法:

namespace pGUI
{
class ProControl
{

};
}

using namespace,正如它所说的使用一个命名空间。您需要使用 namespace 关键字后跟大括号来明确地将某些内容放入命名空间!

关于c++ - VC++ 编译器看不到我的任何命名空间和类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14482689/

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