我正在定义一个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 ++,如果有任何意义的话。
答案 0 :(得分:4)
C ++从文件顶部解析到底部;您需要将Stats
类定义移到Character
类定义之上。
答案 1 :(得分:1)
在C ++中,除非已经声明,否则不能使用某些东西。
在您的情况下,Stats
不仅必须已声明,而且必须已完全定义。
也就是说,所有大写标识符通常都是为宏保留的。不要将它们用于常量。将它们用于常量是对阅读代码的任何人的眼睛的攻击性攻击,它有可能无意中替换文本,并且它减少了宏名称的一小部分选择。这是一个Java主义。它在Java中工作,因为Java没有预处理器(具有讽刺意味的是,Java从C获得了约定,其中宏被用作“常量”)。
干杯&amp; HTH