0

私はこのような2つのクラスを持っています:

class B;

class A {
public:
  int a, b;
  B *b;
public:
  int getctxt()
  {
     b->getctxt1();
  }
}

Class B {
public:  
  int c,d;
  A *a; 
  getctxt1()
  {
      /* something */
  }   
}

main()
{
  B *b = new B();
  A *a = new A();
  b->a = a;
  a->b = b;
}

しかし、コンパイルしようとすると、

不完全なタイプ 'struct A' の無効な使用。

誰でもこれを解決する方法を教えてもらえますか?

4

3 に答える 3

0

これが、クラスを .h ファイルと .cpp ファイルに分けることが推奨される理由です。を書くときclass B;、あなたはコンパイラに B というクラスがあることを伝えていますが、それだけです。コンパイラはこのクラスの中に何があるかを知りません。コンパイラが の行b->getctxt1();に到達すると、bが のインスタンスであることがわかりますが、が のメソッドであるBかどうかはわかりません。すべてを 1 つのファイルに記述する場合は、最初にすべての宣言を記述し、次にすべての実装を記述する必要があります。getctxt1()B

于 2013-10-13T21:04:34.640 に答える