1.首先要陸避免頭檔案的互相引用:
解決方法:
有兩個類A和B, 在各自的頭檔案中聲明對方,而不能用包含, 即要用class 而不能用
include
2. 兩個類的初始化順序:
一定要明确兩個類的初始化順序, 如果在類A中初始化B, 就不要再在B中初始化A;
即可以在A的構造函數中m_b(new B());
3.在各自的頭檔案中應隻聲明對方的指針對像,而不要試圖在頭檔案中去執行個體化;否則你會發現
這樣的錯誤:
錯誤 1 error C2146: 文法錯誤 : 缺少“;”(在辨別符“m_b”的前面) A.h
錯誤 2 error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支援預設 int A.h
錯誤 4 error C2146: 文法錯誤 : 缺少“;”(在辨別符“m_a”的前面) B.h
錯誤 5 error C4430: 缺少類型說明符 - 假定為 int。注意: C++ 不支援預設 B.h