這是我第一次嘗試在我的函數中使用的模板,但我似乎無法使他們的工作。我在一個叫ddc.hpp
C++:調用從模板函數main()
#ifndef __DIGITAL_DOWN_CONVERTER_H__
#define __DIGITAL_DOWN_CONVERTER_H__
namespace ddc {
template <class T> void perform_resampling(std::vector<T> &, unsigned int, unsigned int);
}
#endif
文件中定義我的功能和ddc.cpp
#include "ddc.hpp"
template <class T>
void ddc::perform_resampling(std::vector<T> &data, unsigned int f1, unsigned int f2) {
// do stuff
}
實現它,這是我的main.cpp
#include "ddc.hpp"
int main() {
std::vector<float> v (100000);
ddc::perform_resampling(v, 1000, 10);
return 0;
}
與海灣合作委員會(Linux)的編譯,我得到以下錯誤:
$ g++ -c ddc.cpp -o ddc.o -Wall -O3 -lm -m64
$ g++ -c main.cpp -o main.o -Wall -O3 -lm -m64
$ g++ ddc.o main.o -o ../bin/resampler
main.o: In function `main':
main.cpp:(.text.startup+0xed): undefined reference to `void ddc::perform_resampling<float>(std::vector<float, std::allocator<float> >&, unsigned int, unsigned int)'
collect2: ld returned 1 exit status
make: *** [../bin/HW_3] Error 1
我做錯了什麼?
你不能界面自定義喜歡你的函數和方法做分開,這是這麼簡單,你需要聲明,並在同一個地方定義模板,原因是如果你願意明確閱讀關於模板的內容,但總之,第一塊代碼對編譯器來說沒有意義,並且缺少模板定義。 – user2384250