看板 C_and_CPP 關於我們 聯絡資訊
首先附上簡短的示意code /* A.h */ template<typename T> class A{ public: A(int (*fun_ptr)(int)); }; /* A.cpp */ template<typename T> A<T>::A(int (*fun_ptr)(int)){ } /* main.cpp */ int fun(int n){ } int main(){ A<int> a(fun); } compile之後會顯示 [Linker error]undefined reference to `A<int>::A(int(*)(int))' 我試過如果在A不使用template時就可以正常執行 想請問一下我這種寫法是犯了什麼錯誤嗎?或是我該如何修改才能正確執行呢? 或是我在分檔的時候constructor的實作部分該如何描述呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.71.64.37 ※ 編輯: YuShiYau 來自: 219.71.64.37 (11/02 02:20)
nowar100:用template的時候實作也放到h裡面 不然cpp要include進來 11/02 02:29
wawi:A.cpp不要了 把裡面的東西丟到A.h就可以 11/02 02:35
YuShiYau:所以用template的時候不能分檔寫囉>< 11/02 02:41
yoco315:恩 合在一起寫 11/02 02:47