C++错误:类与同一头文件中的结构有关系

C++ Error: Class has-a-relationship with Struct in Same Header File

本文关键字:文件 一头 有关系 结构 错误 C++      更新时间:2023-10-16

我正在定义一个C++头文件,由于某种原因,当我试图引用在同一文件中定义的结构以及我创建的枚举类时,我创建的类会出错。

虽然我对Java和C#有一些经验,但我对C++还是很陌生的。即便如此,我的编程经验还是相对较低。我初始化引用是否错误?我应该将结构和枚举都放在一个单独的头文件中吗?

#include <iostream>
#include <stdio.h>
class Character 
{
private:
    Stats stats; //<--error: "Type 'Stats' could not be resolved."
public:


};
struct Stats
{
    int strength;
    int intelligence;
    int endurance;
    int speed;
    int agility;
    int luck;
};
enum Race 
{
    NONE,
    HUMAN,
    ALIEN,
    ANDROID
};

注意:我使用Eclipse 3.7(Indigo)作为C++,以防这意味着什么。

C++从文件的顶部到底部进行解析;您需要将Stats类定义移动到Character类定义之上。

在C++中,除非已经声明,否则不能使用某些东西。

在您的情况下,Stats不仅必须已声明,而且必须已完全定义。

也就是说,所有大写标识符通常都是为宏保留的。不要将它们用作常量。将它们用于常量对任何阅读代码的人来说都是一种攻击性的攻击,它有无意中替换文本的风险,而且它减少了宏名称的少量选择。这是Java主义。它在Java中工作是因为Java没有预处理器(具有讽刺意味的是,Java从C中获得了约定,在C中,它的宏被用作"常量")。

干杯&hth