0

我正在尝试编译一个不完整的程序,以尝试在事情变得太大之前捕获语法问题。话虽如此,我创建的类几乎都是完整的(一些成员函数被存根),并且包含在与主程序不同的文件中。Visual Studio 将它们识别为类(可以通过将鼠标悬停在它们上来查看)。

现在,问题是当我尝试编译它时,我收到以下错误:

1>d:\my programs\powerplay\powerplay\powerplay.hpp(99): error C2065: 'pp_player' : undeclared identifier
1>d:\my programs\powerplay\powerplay\powerplay.hpp(99): error C2146: syntax error : missing ')' before identifier 'player'
1>d:\my programs\powerplay\powerplay\powerplay.hpp(99): error C2182: 'resolve_current_space' : illegal use of type 'void'

该文件的第 99 行是一个函数声明(其中 pp_player 是我的类中较大的一个,如前所述,VS 将其识别为一个类,无论如何在编辑器中):

void resolve_current_space (pp_player& player);

一切都正确 #include 'd,并且其他类没有任何问题。我试过注释掉这个函数(声明和定义),但是编译器阻塞了下一个试图使用这个类的对象作为参数的函数。我尝试在文件的前面实例化这个类的一个对象,虽然我没有得到完全相同的错误,但它或多或少等同于同一件事。

任何人都知道这可能是什么?如果需要,如果以上内容还不够,我可以提供我的全部资源。

4

1 回答 1

2

pp_player在您尝试使用它时,没有声明范围内,简单明了,这就是该错误消息的含义。

因此,尽管您断言所有内容都已正确包含,但事实并非如此,或者您包含的内容pp_player在此之前没有声明或定义。

这是 C 和 C++ 中的一个基本原则,大多数东西(标准中有一些不需要这样做的边缘情况,例如标签)需要在使用前声明。

确保在文件的第 99 行之前hpp定义类型。

于 2013-01-02T04:01:48.580 回答