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

C++ 在链接之前声明要使用的类成员函数,c++,compilation,linker,C++,Compilation,Linker,我想使用一个类,它存在于其他模块中,并且可以在链接中使用。头文件的大小很大,所以我不想在当前模块中包含头文件 我正试图通过 foo类 intfoo::getValue() 这里getValue()是我想要使用的foo的成员函数 现在,当我编译代码时,在链接为 错误:“struct foo”的转发声明 我错过了什么 谢谢,您不能转发声明类成员,您需要包含整个标题 这里正确的方法是减小标题的大小。如果它只包含类定义,请保持原样。如果没有,则可能会将其拆分为多个标题 如果类定义很大,这表明您的设计有缺

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

我正试图通过

foo类
intfoo::getValue()

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

现在,当我编译代码时,在链接为

错误:“struct foo”的转发声明

我错过了什么


谢谢,

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

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


如果类定义很大,这表明您的设计有缺陷,可能会被破坏。

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

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


如果类定义很大,则表明您的设计有缺陷,可能会被破坏。

只有在您不需要了解类的内部结构(即成员和/或大小)时,才可以使用类的正向声明

此技术的典型用途包括类指针或引用:

class included_class;

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

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

仅当您不需要了解类的内部结构(即成员和/或大小)时,才可以使用类的转发声明

此技术的典型用途包括类指针或引用:

class included_class;

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

试图以所指示的方式向前声明类内部结构是不可能的,使用此技术并需要包含类头。

您可以考虑piml习惯用法。你可以考虑piml成语。看见