Ton*_*ony 21 c++ inheritance nested-class
我正在尝试执行以下操作:
class Animal
{
class Bear : public Animal
{
// …
};
class Giraffe : public Animal
{
// …
};
};
Run Code Online (Sandbox Code Playgroud)
...但是我的编译器似乎对此嗤之以鼻.这是合法的C++,如果没有,是否有更好的方法来完成同样的事情?基本上,我想创建一个更清晰的类命名方案.(我不想Animal从公共基类派生和内部类)
Ric*_*olf 45
您可以执行所需的操作,但必须延迟嵌套类的定义.
class Animal
{
class Bear;
class Giraffe;
};
class Animal::Bear : public Animal {};
class Animal::Giraffe : public Animal {};
Run Code Online (Sandbox Code Playgroud)
Tad*_*pec 15
在到达定义的末尾之前,类类型被认为是不完整的.您不能从不完整的类继承,因此您不能从封闭的类继承.
编辑:更正
正如理查德沃尔夫纠正我:如果你延迟嵌套类的定义,可以继承封闭类.详情请见他的回答.