編輯:這是不是標準模板問題的副本。在模板類中,如何定義具有不同類型名稱的函數
我的場景涉及模板類和類蒙山一個參數是模板的成員函數,而不是同類型的類。
即使當我把定義中的標頭,我仍然無法找到正確的語法。
有人可以幫助我與我的具體問題?
我過於簡單的代碼:
了foo.h:
template<typename T1>
class Foo {
public:
template<typename T2>
static void bar(vector<T1>& a, vector<T2>& b);
};
Foo.cpp中:
#include <Foo.h>
template<typename T1>
template<typename T2>
void Foo<T1>::bar(vector<T1>& a, vector<T2>& b) {
//code logic
}
Goo.cpp:
#include <Foo.h>
int main(int argc, char** argv) {
vector<int> a;
vector<double> b;
Foo<int>::bar(a, b);
}
我的錯誤:
undefined reference to
void Foo<int>::bar<double>(std::vector<int, std::allocator<int> >&,
std::vector<double, std::allocator<double> >&)
我找不到合適的方式來定義的模板。
我也注意到,typenames的順序將改變錯誤(也把整個函數在類聲明)。
什麼是正確的語法?
爲什麼你認爲這是不是重複?你不能在源文件中定義模板。 「即使我把這個定義放在標題中,我仍然找不到正確的語法。」 ...那你爲什麼不用頭部中的定義顯示代碼? – user463035818
如果你[編輯]這個問題向我們展示了在頭文件中定義的模板成員函數的代碼,我們可以重新打開它。用於簡化代碼的榮譽 - 確保編輯後的簡化版本仍然失敗,幷包含錯誤消息。 (如果你在評論中提到我,我想我可以單獨重新打開它。) –
你的Foo.h有一個錯字和一個缺失的分號。請僅複製並粘貼實際嘗試編譯的代碼,並驗證是否收到聲明的錯誤消息。 – aschepler