错误使用前瞻性声明?

时间:2017-06-04 03:15:57

标签: c++ class oop declaration forward

有时我使用嵌套类的前向声明:

class A;

class B
{
  private:
    A* object_A;
  public:
    B(){}
};

问题:如果我现在使用类B的前向声明(此时已声明并定义了B)对于C类中的用法,会发生什么?这是否会导致类B出现任何问题,因为它已定义(使用方法等实现)但是与类C的前向声明一起使用?以下代码片段中的语法class B;是否以某种方式覆盖先前声明,定义和实现的类B

class B;

class C
{
  private:
    B* object_B;
  public:
    C(){}
};

1 个答案:

答案 0 :(得分:2)

  

语法类B;在下面的代码片段中以某种方式覆盖先前声明,定义和实现的类B?

前瞻性声明与覆盖无关。它只是给编译器提示类型定义是在某处实现的。对于用户定义的指针类型,编译器不需要定义,但需要知道对象的类型。