内联函数的问题导致“成员访问不完整类型”编译器错误

问题描述

我在我的一个类中实现内联函数时遇到问题。

我已成功为此类管理的类之一内联函数,如下所示:

    static bool filterInfected( Person* p ) { return p->isInfected(); }

Person 的头文件包含在这个类 .hpp 文件

但是

当我尝试使用类似协议为另一个托管类内联另一个函数时:

static int accumulateInfected( GroupHeader* groupHeader ) { return groupHeader->getNumInfected(); }

我收到编译器错误“成员访问不完整类型‘GroupHeader’”

与上面的 Person* 一样,GroupHeader 的头文件包含在此类 .hpp 文件

如果我将函数体从 heder 文件中移到 .cpp 源文件中,一切正常,但我有许多单行访问函数,我想要内联以消除实现文件中的混乱。

我们将不胜感激,如果您需要更多信息,请随时询问。

期待中的感谢

特里

解决方法

已修复,将 GroupHeader 的头文件直接包含在 GroupMaster 的头文件中。这最初不起作用,因为 GroupHeader.hpp 文件包含 GroupMaster.hpp 文件(某个时候一定有充分的理由!)从 GroupHeader.hpp 文件中删除此标题修复了我的问题并且没有破坏任何东西否则。

自我注意:检查并重新检查所有标题包含;它们真的有必要吗,还是前向类声明就足够了?

感谢所有回答我最初问题的人。