2019年5月25日 星期六

for C++,交互參考,明明都已經有include了,編譯時還是出現「does not name a type」錯誤訊息

類別相互在定義時互相參考是常有的事
fiile A.h
---------------
#include "B.h"
class A{
    public:
   private:
       B* m_pB;
}
file B.h
-------------------
#include "A.h"
class B{
    public:
    private:
       A* m_pA;
}
------先不管A.cpp & B.cpp---
build 一下,會發生「A does not name a type」的錯誤訊息

這時,只要在A.h 中,先在class A的定義前加上 「class B;」這樣就可以了
---------A.h----
include "B.h"
class B;
 class A{
   public:
   private:
     B* m_pA;
}
----------------
(本例是互相參考,所以B.h也要加上 「class A;」這行)

詳細請參考這裡 「'XX' does not name a type 和 field 'XX' has incomplete type - 兩個 C++ 編譯錯誤及解決辦法
大家加油囉