c++ - 如何在同一个类中转发声明一个函数?

标签 c++ forward-declaration

有一个类A,所有声明和定义都放在里面,如下所示:

class A
{
  void f(); // forward declaration for a lengthy method
  ...
  void g()
  {
    f();    // call the above forward-declared method
  }
  void f()  // definition of a lengthy method
  {
    ...
  }
}

我不想像 A::f() 那样从类头文件中取出 f(),而只想将所有源代码保留在类中。 但是,当我编译它时,出现以下错误:

error C2535: 'void A::f()': member function already defined or declared
note: see declaration of 'A::f'

有没有办法解决这个问题?

最佳答案

您不需要转发声明成员函数。并且您不能在类定义中同时进行前向声明和定义成员函数 - 如果您进行前向声明,则必须在类定义之外定义成员函数。

成员函数定义在“完整的类上下文”中,这意味着它们可以访问类的所有成员,甚至是那些在函数体之后声明的成员。

因此,您的示例可以通过删除 f 的第一个声明来修复。

关于c++ - 如何在同一个类中转发声明一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70585329/

相关文章:

c++ - 编译器如何遍历一个类?

c++ - 使用不完整类型参数化的模板的外部模板

c++ - 记录函数调用的工具?

c - header 开始 - 前向声明

c++ - 循环包含和前向声明类

c++ - 如何转发声明用作成员变量的结构

c++ - printf 如何知道 CString 字符数据的地址?

c++ - 模板参数推导

c++ - 通过 PE header 找出 PE 文件的结束位置?

c++ - 从派生类将非构造函数参数变量传递给基类构造函数会导致奇怪的行为