假设我有2个课程:
- class A
- {
- public:
- typedef std::shared_ptr<A> Ref;
- ...
- private:
- B::Ref _b;
- }
- class B
- {
- public:
- typedef std::shared_ptr<B> Ref;
- ...
- private:
- A::Ref _a;
- }
这显然需要B类和B类参考号的前向声明.向前声明B很简单,但如何做到B :: Ref呢?
解决方法
您不能转发声明一个嵌套的typedef,因为在前向声明B处将是一个不完整的类型.你可以解决你的问题,如下所示:
- class B;
- class A {
- std::shared_ptr<B> _b;
- public:
- typedef std::shared_ptr<A> Ref;
- };
- class B {
- A::Ref _a;
- public:
- typedef std::shared_ptr<B> Ref;
- };