[英]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.