声明要在链接之前使用的类成员函数

declare a class member function to use before linking

本文关键字:成员 函数 链接 声明      更新时间:2023-10-16

我想使用一个存在于其他模块中的类,并且可以在链接中使用。头文件的大小很大,所以我不想在当前模块中包含头文件。

我正在尝试转发声明类

福类;
int foo::getValue((;

这里getValue((是我想使用的foo的成员函数。

现在,当我编译代码时,我在链接之前出现编译错误

error: forward declaration of 'struct foo'

我在这里错过了什么?

谢谢

不能转发声明类成员,需要包含整个标头。

此处的正确方法是减小标头的大小。如果它只包含类定义,请保持原样。如果没有,则有可能将其分解为多个标头。

如果类定义很大,这表明你的设计有问题,可能会被分解。

仅当您不需要了解类的内部结构(即成员和/或大小(时,才能使用类的前向声明。

此技术的典型用法涉及类指针或引用:

class included_class;
class encapsulating_class
{
  public:
    void some_method(const& included_class_pointer) const;
  private:
    included_class * included_class_pointer;
};

尝试以您指示的方式转发声明类内部是无法使用此技术进行的,并且需要包含类标头。