我正在尝试编译一个不完整的程序,以便在事情变得太大之前尝试捕获语法问题。话虽这么说,我创建的类都是完整的(一些成员函数是存根的),并包含在主程序的单独文件中。 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,其他类没有任何问题。我已经尝试注释掉这个函数(声明和定义),但是编译器在下一个试图使用这个类的对象作为参数的函数上扼杀。我尝试在文件的前面实例化这个类的对象,虽然我没有得到完全相同的错误,但它或多或少等于同样的事情。
任何人都知道这可能是什么?如果需要的话,如果上述内容不够,我可以提供完整的源代码。
答案 0 :(得分:2)
在您尝试使用它时,范围内没有声明pp_player
,简单明了,这就是错误消息的含义。
因此,尽管您断言所有内容都已正确包含在内,但事实并非如此,或者您所包含的内容在此之前未声明或定义pp_player
。
这是C和C ++的基本原则,大多数事情(标准中有一些不需要这样的边缘情况,例如标签)需要在使用前声明。
确保在hpp
文件的第99行之前定义类型。