C++类中类的递归继承定义
2018-03-13 本文已影响52人
DarkBubble
C++中定义一个类型T,然后在T中定义T1/T2两个类型,要求T1/T2从T派生出来。这种情况下,必须先声明后定义。
class T
{
public:
struct T1;
struct T2;
};
class T::T1 : public T
{
public:
/* ... */
};
class T::T2 : public T
{
public:
/* ... */
};
这对模板类也成立:
template<typename A>
class T
{
public:
struct T1;
};
template<typename A>
class T<A>::T1 : public T<A>
{
public:
/* ... */
};
定义递归类型可以先声明,然后再使用指针来定义一些成员,然后把递归类型的定义实体放在外部。