小编Yus*_*göz的帖子

为什么类中的前向声明不是内部类的前向声明?C ++

我的问题是;为什么类中的前向声明不是内部类的前向声明?它是定义的还是未定义的?我只是想知道,为什么没有目的,没有目的。

例;

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)

c++ forward-declaration language-lawyer

7
推荐指数
0
解决办法
92
查看次数

如何在没有确切类型信息的情况下从 void* 转换为虚拟基类?

 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)

c++ casting multiple-inheritance virtual-inheritance

5
推荐指数
1
解决办法
1289
查看次数