C ++错误:类与同一头文件中的Struct具有-a关系

时间:2011-06-23 02:51:59

标签: c++ eclipse compiler-errors

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

我很擅长C ++,尽管我有一些Java和C#的经验。即便如此,我的编程经验也相对较低。我初始化引用错了吗?我应该将struct和enum放在一个单独的头文件中吗?

#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 ++,如果有任何意义的话。

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:1)

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

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

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

干杯&amp; HTH