我是C ++的新手,让我说我有两个课程:Creature
和Human
:
/* creature.h */
class Creature {
private:
public:
struct emotion {
/* All emotions are percentages */
char joy;
char trust;
char fear;
char surprise;
char sadness;
char disgust;
char anger;
char anticipation;
char love;
};
};
/* human.h */
class Human : Creature {
};
我在main.cpp
的主要功能中有这个:
Human foo;
我的问题是:如何设定foo的情绪?我试过这个:
foo->emotion.fear = 5;
但是GCC给了我这个编译错误:
错误:' - >'的基本操作数有非指针类型'人'
此:
foo.emotion.fear = 5;
给出:
错误:'struct Creature :: emotion'无法访问 错误:在此背景下 错误:无效使用'struct Creature :: emotion'
任何人都可以帮助我吗?感谢
P.S。不,我没有忘记#include
s
答案 0 :(得分:12)
没有emotion
类型的变量。如果您在班级定义中添加emotion emo;
,则可以根据需要访问foo.emo.fear
。
答案 1 :(得分:7)
class Human : public Creature {
C ++默认为class
es。
答案 2 :(得分:3)
将继承更改为public并在Creature类(例如emo)中定义struct情感成员。
因此,您可以实例化Human类的对象(例如foo)并将值赋予其成员,如
foo.emo.fear = 5;
或
foo->emo.fear = 5;
代码已更改:
/* creature.h */
class Creature {
private:
public:
struct emotion {
/* All emotions are percentages */
char joy;
char trust;
char fear;
char surprise;
char sadness;
char disgust;
char anger;
char anticipation;
char love;
} emo;
};
/* human.h */
class Human : public Creature {
};
答案 3 :(得分:1)
Creature::emotion
是一种类型,而不是变量。你做的是等同于foo->int = 5;
但你自己的类型。将您的结构定义更改为此,您的代码将起作用:
struct emotion_t { // changed type to emotion_t
// ...
} emotion; // declaring member called 'emotion'