假设我有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; };