c++ - C++ 中前向声明的类

标签 c++ class

我在使用 C++ 时遇到问题。

我想创建两个类,A 和 B。

类 A 有一些方法采用类 B 实例的参数。但在类 B 中,我也有一些方法采用类 A 实例的参数。

我尝试转发声明类 A,然后定义类 B。最后,我定义类 A。

一些代码:

class A;

class B
{
  void Method1(A* instaceOfA)
 {
     instaceOfA->MethodX();
 }
  .......
};

class A
{
  Method1(B* instaceOfB);
  MethodX();
  .......
};

我在 Visual Studio 2010 中编码,它显示错误,因为我在类 A 中调用 MethodX 但类 A 未完全定义。

如何解决这个问题?

最佳答案

B::Method1的定义放在class A声明之后

//header file
class A;

class B
{
  void Method1(A* instaceOfA);
  .......
};

class A
{
  Method1(B* instaceOfB);
  MethodX();
  .......
};

// cpp file
 void B::Method1(A* instaceOfA);
 {
     instaceOfA->MethodX();
 }

这就是.cpp 文件的用途。您可以在头文件中声明类和方法,然后将定义添加到 .cpp 文件中。

关于c++ - C++ 中前向声明的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8430394/

相关文章:

c++ - 从三次贝塞尔曲线的 x 坐标获取 y,快速 Newton-Raphson 方法

java - 我怎样才能把它移到另一个类(class)

C++:访问仅存在于一个派生类中的变量

C++代码改进,数组越界

c++ - 重定义类函数报错C++

c++ - 结构的原型(prototype)函数

c++ - 如何在不影响 Windows 操作系统上的 C++ 中的文本颜色的情况下更改整个控制台的背景颜色

C++ - 将输入函数作为字符串调用

c++ - 何时对 GCC 使用 -g 标志

c# - 将方法添加到基类c#