問題描述:
現在有兩個模板類(頭文件A.h為1~14行,頭文件B.h為15~27行):
1: ///////////////////////////////////////////2: // file A.h3: //4: #include "B.h"5:6: template <class T>7: class A8: {9: public:10: T a;11: B b_ptr;12: A(): a(0), b_ptr(NULL) {}13: };14:15: ///////////////////////////////////////////16: //file B.h17: //18: #include "A.h"19:20: template <class T>21: class B22: {23: public:24: T b;25: A a_ptr;26: B(): b(0), b_ptr(NULL) {}27: };
此處編譯會報如下錯誤:
error C4430:缺少類型說明符-假定為int。注意:C++不支持默認int
error C2143:語法錯誤:缺少“,”(在”<”的前面)
解決辦法:
在A.h中對類B進行前向聲明,在B.h中對類A進行前向聲明,如下代碼所示(代碼7~8行和25~26行):
1: ///////////////////////////////////////////2: // file A.h3: //4: #include "B.h"5:6: // forward statement7: template <class T>8: class B;9:10: template <class T>11: class A12: {13: public:14: T a;15: B b_ptr;16: A(): a(0), b_ptr(NULL) {}17: };18:19: ///////////////////////////////////////////20: //file B.h21: //22: #include "A.h"23:24: // forward statement25: template <class T>26: class A;27:28: template <class T>29: class B30: {31: public:32: T b;33: A a_ptr;34: B(): b(0), b_ptr(NULL) {}35: };
關鍵詞:
前向聲明, 模板類
E-mail:www.lxl1965@hotmail.com
