創建C++ Builder中的類,這個類有一個函數模板特C++ Builder的
static void foo(std::vector < bar* > x, int y);
但是當我嘗試編譯這段代碼這個錯誤發生:
Undefined symbol 'bar'; Cannot generate template specialization from 'std::vector<_Ty, _Ax>'; >expected;) expected;
怎麼了?
創建C++ Builder中的類,這個類有一個函數模板特C++ Builder的
static void foo(std::vector < bar* > x, int y);
但是當我嘗試編譯這段代碼這個錯誤發生:
Undefined symbol 'bar'; Cannot generate template specialization from 'std::vector<_Ty, _Ax>'; >expected;) expected;
怎麼了?
由於錯誤提示,沒有可用符號bar
的定義。
在申報foo
之前的某個時間點需要刪除它;要麼在同一個文件中,要麼在包含它的頭文件中。
編譯器告訴你它不知道bar
是什麼。 bar
在哪裏定義?如果在編譯foo()
聲明時尚未定義,則會出現錯誤。
由於您使用的是指針類型的模板參數,你可以使用預先聲明爲bar
,如果你不能完全定義bar
事前,如:
class bar; // forward declaration
static void foo(std::vector < bar* > x, int y);
「酒吧」在標題中定義。我在你展示'class bar的時候就做了, static void foo(std :: vector
要訪問成員,需要包含'bar'頭文件在實現'foo()'主體的源文件中。 – 2012-03-07 20:43:53
如果定義'bar'? – chrisaycock 2012-03-07 18:49:59