C++ 初学者 - 在类内部使用类时遇到问题

标签 c++ class header-files return-type

我正在做一个大学项目,我必须在其中实现一个简单的拼字游戏。

我有一个 player 类(包含一个 Score 和玩家的手,以 std::string 的形式,和一个 score 类(包含名称和数字 (int) 分数)。

Player 的成员函数之一是 Score getScore(),它返回该玩家的 Score 对象。但是,我在编译时收到以下错误:

player.h(27) : error C2146: syntax error : missing ';' before identifier 'getScore'
player.h(27) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
player.h(27) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
player.h(27) : warning C4183: 'getScore': missing return type; assumed to be a member function returning 'int'
player.h(35) : error C2146: syntax error : missing ';' before identifier '_score'
player.h(35) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int
player.h(35) : error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

这里分别是第 27 行和第 35 行:

Score getScore(); //defined as public
(...)
Score _score; //defined as private

我知道编译器无法将 Score 识别为有效类型...但为什么呢?我在 player.h 的开头正确包含了 Score.h:

#include "Score.h"
#include "Deck.h"
#include <string>

我在 Score.h 中定义了 Score 的默认构造函数:

Score(); //score.h

//score.cpp
Score::Score()
{
    _name = "";
    _points = 0;
}

如有任何意见,我们将不胜感激!

谢谢你的时间,

弗朗西斯科

编辑:

根据要求,score.h 和 player.h: http://pastebin.com/3JzXP36i http://pastebin.com/y7sGVZ4A

最佳答案

您遇到了循环包含问题 - 在这种情况下相对容易解决。

Score.h 中删除 #include "Player.h"


参见 this如果 Score 实际使用了 Player,请解释和讨论您需要做什么的问题。


至于您遇到的编译器错误,这就是 Microsoft 的编译器报告使用未定义类型的方式 - 您应该学会在头脑中将它们全部翻译成“声明中使用的类型未定义”。

关于C++ 初学者 - 在类内部使用类时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2803910/

相关文章:

c++ - 使用 getch() 保持命令提示符打开 Visual C++ 2010

C# 计算重复数字

c - 在头文件中包含C文件

c++ - 为 C++ 设置 Eclipse

c++ - 将 QVector 作为 arg 传递给 QRunnable

C++ 返回指针仅给出数组的第一个元素

C++,捕获错误作为引用时的段错误

python - 在 Python 类中使用 self(在 Nuke 中制作 GUI)

c++ - 为什么我们不需要对象来存储字符串数据?

c - struct vop_vector 在哪里声明的?