簡體   English   中英

內聯函數的問題導致“成員訪問不完整類型”編譯器錯誤

[英]Problem with inlining functions gives “Member access into incomplete type” compiler error

我在我的一個類中實現內聯函數時遇到問題。

我已經成功地內聯了這個 class 管理的類之一,如下所示:

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

此 classes.hpp 文件中包含 Person 的 header 文件

當我嘗試使用類似的協議為另一個托管 class 內聯另一個 function 時:

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

我收到編譯器錯誤“成員訪問不完整的類型‘GroupHeader’”

與上面的 Person* 一樣,此 classes.hpp 文件中包含 GroupHeader 的 header 文件

如果我將 function 主體從 heder 文件中移到 .cpp 源文件中,一切正常,但我有許多單行訪問函數,我想內聯以消除實現文件中的混亂。

任何幫助將不勝感激,如果您需要更多信息,請隨時詢問。

感謝期待

特里

已修復,通過將 GroupHeader 的 header 文件直接包含在 GroupMaster 的 header 文件中。 這最初不起作用,因為 GroupHeader.hpp 文件包含 GroupMaster.hpp 文件(有時一定有一個很好的理由。)從 GroupHeader.hpp 文件中刪除這個 header 修復了我的問題並且沒有破壞任何東西別的。

自我注意:檢查並重新檢查所有 header 包括; 它們真的有必要嗎,還是前向 class 聲明就足夠了?

感謝所有回答我最初問題的人。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM