我的问题是;为什么类中的前向声明不是内部类的前向声明?它是定义的还是未定义的?我只是想知道,为什么没有目的,没有目的。
例;
class A
{
public:
class B *b;
class B
{
};
};
class B
{
};
int main()
{
A a;
B b;
A::B ab;
a.b = &b; //OK
a.b = &ab; //Doesn't compile (godbolt.org)
return 0;
}
Run Code Online (Sandbox Code Playgroud)
编辑:谢谢。如果有人想知道名称空间,那么这里有代码。
namespace A
{
class B *pb;
/*class B;
B pb;*/ //It is the same as above. But has another meaning in class
class B
{
};
}
class B
{
};
int main()
{
B b;
A::B ab;
A::pb …
Run Code Online (Sandbox Code Playgroud) class A : public X;
class B : public virtual A;
class C : public virtual A;
class D1 : public B, public C;
class D2 : public B, public C;
void *p1 = new D1; //after storing the pointers,
void *p2 = new D2; //there will be no exact type info.
A *pA1 = (A *) p1; // Cast 1
A *pA2 = (A *) p2;
X *pX1 = (X *) p1; // Cast 2
X *pX2 = (X …
Run Code Online (Sandbox Code Playgroud)