命令空间及类A的a.h文件如下:
namespace mySpace
{
class A
{
public:
A();
~A();
};
}
命令空间及类的a.cpp文件如下:
namespace mySpace
{
class A
{
public:
A()
{
}
~A()
{
}
};
}
在类B的.h文件中声明了一个A的指针,由于某种原因不能包含A.h,所以只能采取前向声明的办法,类似如下:
class A;
class B
{
public:
B();
~B();
private:
A* m_pA{nullptr};
};
因为A类是包含在命令空间中的,所以上述前置声明编译会报错,应该像如下那样:
namespace mySpace
{
class A;
};
class B
{
public:
B();
~B();
private:
mySpace::A* m_pA{nullptr};
};
文章讲述了在C++编程中,如何处理命令空间内的类A在类B中进行前向声明的问题。由于类A位于mySpace命名空间内,直接的前向声明会导致编译错误。正确的做法是在前向声明时指定命名空间,如`mySpace::A`,以避免编译冲突。
1757

被折叠的 条评论
为什么被折叠?



