Possible Duplicate:
C++ templates, undefined reference未定義參照
我有一個非常簡單的程序包括三個文件,它們從普通陣列構建載體:
//create.hpp
#ifndef CREATE_HPP_
#define CREATE_HPP_
#include <vector>
using namespace std;
template<class T>
vector<T> create_list(T uarray[], size_t size);
#endif /* CREATE_HPP_ */
//create.cpp
#include "create.hpp"
template<class T>
vector<T> create_list(T uarray[], size_t size){
vector<T> ulist(uarray, uarray + size);
return ulist;
}
//main.cpp
#include <vector>
#include <iostream>
#include "create.hpp"
using namespace std;
int main(){
char temp[] = { '/', '>' };
vector<char> uvec = create_list<char>(temp, 2);
vector<char>::iterator iter=uvec.begin();
for(;iter != uvec.end();iter++){
cout<<*iter<<endl;
}
return 0;
}
構建過程如下:
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o create.o create.cpp
g++ -O0 -g3 -Wall -c -fmessage-length=0 -o main.o main.cpp
g++ -o main.exe main.o create.o
在構建程序,我得到這個錯誤:
main.o: In function `main':
../main.cpp:18: undefined reference to `std::vector<char, std::allocator<char> > create_list<char>(char*, unsigned int)'
這個程序是非常簡單的。但是,編譯成功,但鏈接失敗。然後我將所有的代碼移動到一個文件中,一切都像魅力一樣。有人能幫我弄清楚這個嗎?
.cpp中的模板定義?答案_nine億次_。請搜索。 –
是的,我搜索並找到了幾個答案,但這些答案並沒有幫助我理解這個問題。 – RainSia