0

例如,我有 2 个按以下顺序定义的类...

class A
{
     int value;

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

class B  
{
   int value;

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

}

我如何在 A 中使用 B 对象,因为 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 回答