我迫不及待地想要解决这个微不足道的痛苦问题 我有一个班级
///A.h
class A
{
//declare something
};
///A.cpp
//implement that something of A
然后是另一个班级
///B.h
class A;
class B
{
private:
A_PTR aptr; //Missing ';' before aptr
public:
A_PTR getA();
};
///B.cpp
typedef std::shared_ptr<A> A_PTR;
//implement all B's methods
为什么我在A_PTR上收到错误消息,因为在B类中声明了aptr?
答案 0 :(得分:3)
因为尚未定义A_PTR
。您需要将定义移到您使用它的第一个点之上:
///B.h
class A;
typedef std::shared_ptr<A> A_PTR;
class B
{
private:
A_PTR aptr;
public:
A_PTR getA();
};