C++ 我的类被视为未声明的标识符

C++ 我的类被视为未声明的标识符,c++,visual-c++,C++,Visual C++,我正试图编译一个不完整的程序,以便在事情变得太大之前尝试捕捉语法问题。也就是说,我创建的类几乎都是完整的(一些成员函数是存根的),并且包含在与主程序不同的文件中。VisualStudio将它们识别为类(可以通过将鼠标悬停在它们上面来查看) 现在的问题是,当我试图编译它时,我得到以下错误: 1>d:\my programs\powerplay\powerplay\powerplay.hpp(99): error C2065: 'pp_player' : undeclared identifi

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

现在的问题是,当我试图编译它时,我得到以下错误:

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在编辑器中将其识别为类):

所有内容都正确地包含了d,其他课程也没有任何问题。我已经尝试注释掉这个函数(声明和定义),但是编译器阻塞了下一个尝试使用这个类的对象作为参数的函数。我尝试在文件的前面实例化这个类的一个对象,虽然我没有得到完全相同的错误,但它或多或少是相同的


有人知道这是什么吗?如果需要的话,如果上面的内容还不够,我可以提供我的全部源代码。

在您试图使用它的时候,范围内没有声明
pp\u player
,简单明了,这就是错误消息的意思

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

<> P>这是C和C++中的基本原则,大多数事情(在标准中不需要这些边缘情况,例如标签)需要在使用之前声明。
确保您在
hpp
文件的第99行之前定义了类型。

这仅仅意味着
pp\u player
尚未声明。也就是说,在该函数声明之前没有
类pp_player
。该类在pp_player.hpp中定义,它包含在powerplay.hpp中。该.hpp文件的#include语句是第四行未注释的内容。@Shen,有很多事情可能是错误的(没有完整的源代码就很难说)。首先,声明可以在一个不是“触发”的
ifdef
中。或者,您可以使用
1
(wun)而不是
l
(ell)声明
pp\u播放器
,也可以使用不同路径的旧标题。但底线是它没有被宣布。通过对源代码的检查,希望能告诉您原因。@Shen check for cyclic#includes。另外,请尝试打开-P以获取.i文件中的C预处理器输出。@brianbeuning感谢您提醒我检查循环包含。在我改变主意并把它带到外面之前,我最初是为了成为这个类的一员而编写这个函数的,并且在我移动函数时忘记删除了一个游离的#include。
void resolve_current_space (pp_player& player);