所以我正在创建一个类来定义 D&D 中的角色。我认为设置类(class)的方式是公共(public)成员在 header 中定义,而私有(private)成员在 .cpp 中定义,这样他们就不会向外界透露,对吧?你怎么做到这一点?目前它看起来像这样,我确定它是错误的。
字符.h:
namespace d20 {
class character {
public:
character(void);
virtual ~character(void);
// get stats
int getStr();
int getDex();
int getCon();
int getIntl();
int getWis();
int getCha();
// get modifiers of the stats
int getStrMod();
int getDexMod();
int getConMod();
int getIntlMod();
int getWisMod();
int getChaMod();
};
};
字符.cpp:
namespace d20 {
class character {
private:
int str; // strength
int dex; // dexterity
int con; // constitution
int intl; // intelligence
int wis; // wisdom
int cha; // charisma
int hp; // hit points
int ac; // armor class
};
character::character(void) {
}
character::~character(void) {
}
}
是的,我知道有很多东西不见了,但这不是重点。 Visual Studio 2010 在类 View 中将其显示为 2 个名为 character 的类。我如何实现我的意图?这无关紧要,因为这是一项任务,而且所有代码都是可见的,但对于 future ,将私有(private)成员排除在 .h 文件之外可能是明智的,对吧?
最佳答案
只需将private
成员放在同一个头文件中。类定义不能按设计分布在不同的文件中。
为什么首先要防止那些 private
成员被客户看到?作为私有(private)
,无论如何都不能直接访问它们。
编辑:
那些私有(private)成员是类的实现细节。它们必须在类的定义中,因为有时编译器需要知道类对象的大小:
int main()
{
character ch;
// pass by value
Func(ch);
..
}
在上面的例子中,编译器没有办法知道 ch
的大小,除非它看到 character
的定义,并且它可以通过查看来计算出大小在类定义!这就是您需要将实现放在类定义中的原因之一。
关于c++ - C++ 中的类成员隐私和 header ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7830639/