class 类前向声明

Posted pengtangtang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了class 类前向声明相关的知识,希望对你有一定的参考价值。

/*
  使用前向引用声明虽然可以解决一些问题,但它并不是万能的。需要注意的是,
  尽管使用了前向引用声明,但是在提供一个完整的类声明之前,不能声明该类的对象,
  也不能在内联成员函数中使用该类的对象。请看下面的程序段:
  */
   
  //第一种
  #include<iostream>
  class Fred; //前向引用声明
  class Barney {
  Fred x; //错误:类Fred的声明尚不完善
  };
  class Fred {
  Barney y;
  };
   
   
  //第二种
  class Fred; //前向引用声明
   
  class Barney {
  public:
  void method()
  {
  x->yabbaDabbaDo(); //错误:Fred类的对象在定义之前被使用
  }
  private:
  Fred* x; //正确,经过前向引用声明,可以声明Fred类的对象指针
  };
   
  class Fred {
  public:
  void yabbaDabbaDo();
  private:
  Barney* y;
  };
   
  /*
  总结:当使用前向引用声明时,只能使用被声明的符号,而不能涉及类的任何细节。
  */

以上是关于class 类前向声明的主要内容,如果未能解决你的问题,请参考以下文章

类前向声明​​ C++

类前向声明​​失败,没有递归包含

前向声明时“struct”和“class”关键字是不是相同? [复制]

C++ 中嵌套类型/类的前向声明

idjl(Sun IDL 编译器)是不是支持前向声明?

在 Objective-C 中前向声明枚举