我有,有一个成员C++ - 派生类是否继承基类的静态成员?
static Cell **grid;
我也得到了一个派生类的字符是另一类Player中的基类的基类游戏物体。所以我的问题是:GameObject,Character和Player类的所有对象是否都可以访问同一个网格?
我有,有一个成员C++ - 派生类是否继承基类的静态成员?
static Cell **grid;
我也得到了一个派生类的字符是另一类Player中的基类的基类游戏物体。所以我的问题是:GameObject,Character和Player类的所有对象是否都可以访问同一个网格?
甲Player
为Character
,其为GameObject
。所以是的,他们都可以访问静态的grid
。
......当然受访问保护(正如Sam指出的那样)。所以,你需要一个public
或protected
区域内声明grid
这是真实的,而且,你需要使用protected
或public
模式声明继承:
class GameObject
{
protected:
static Cell **grid;
};
class Character : protected GameObject
{
};
的规则是否静态类成员基类是可供立即派生类中,最派生类,或二者之间的任何其它类的类层次结构取决于:
静态类成员是否是公共的,受保护的,还是私人的。
在继承链中,每个类是继承基类作为公共类,受保护的类还是私有类。
所以你的问题的答案是:依赖。取决于这些因素。
对不起。我应该补充说它是基类的受保护成员 –
并且派生类从其各自的基类公开继承 –
公开派生或受保护地(即使是一个词?)继承基类的受保护成员的类,并且它们在派生类中受到保护。派生私有继承基类的受保护成员的类,并且它们在派生类中是私有的。 –
我相信,除非您明确使用保护修饰符,否则此属性将被视为私有。在你的例子中,你没有用保护或public作为它的前缀,所以它将被认为是私有的,因此在派生类中不可访问。
这取决于该类是否用'class'或'struct'关键字声明。 –
如果'Character'从'GameObject'私下继承,它仍然可以访问'GameObject :: grid'。从“Character”派生的类将无法访问。 – Peter