0

たとえば、次の順序で定義されている2つのクラスがあります...

class A
{
     int value;

     printValue(B b)
     {
        cout << b.value
     }
};

class B  
{
   int value;

   printValue(A a)
   {
      cout << a.value;
   }

}

Bの定義は以下のとおりですが、AでBオブジェクトを使用するにはどうすればよいですか?

4

1 に答える 1

6

クラスの宣言と実装を分離し、宣言ヘッダーファイルでそれらを前方宣言し、関数で参照を使用できます。

ファイルああ

class B; // forward declaration
class A {
  public:
     int value;
     void printValue(const B& b) const; // pass by reference
};

ファイルBh

class A; // forward declaration
class B  {
  public:
   int value;
   void printValue(const A& a) const; // pass by reference
};

次に、個別の実装ファイルを用意します。たとえば、Aの実装ファイルA.cpp

#include "A.h"
#include "B.h"

void A::printValue(const B& b) const {
   std::cout << b.value;
}

同様にB.cpp

関数の欠落している戻り値を修正し、printValueそれらの関数を作成したことに注意してくださいconst

于 2012-08-07T12:45:15.910 に答える