2017-10-06 62 views
0

我們正在嘗試編寫一個非常簡單的類,以複數jsut爲例,並且我們沒有得到太多...帶模板的簡單類

以下是我們的3個文件。

complex2.h

#include<iostream> 
#include<new> 

template<class T> 
class complex2 
{ 
private: 
    T re, im; // real and imaginary part 
public: 
    complex2(); 
    complex2(T re_a =0.0, T im_a =0.0); //= 0.0 = 0.0 

    ~complex2() {} 
    T Re() const; 
    T Im() const; 
}; 

#endif // COMPLEX2_H 

complex2.cpp

#include "complex2.h" 

template<class T> 
complex2<T>:: complex2() {re = im = 0.0; } 

template<class T> 
complex2<T>:: complex2(T re_a, T im_a){re = re_a; im = im_a;} 

template<class T> T complex2<T>:: Re() const { return re;} 

template<class T> T complex2<T>:: Im() const {return im;} 

的main.cpp

#include <iostream> 
#include<cmath> 
#include"complex2.h" 

using namespace std; 

int main() 
{ 
    complex2<int> b(1, 2);// 
    cout << "Re b: "<< b.Re() << "Im b: "<< b.Im() << endl; 
    return 0; 
} 

運行以上來自Qt,給出了錯誤信息

/home...main.cpp:10: error: undefined reference to `complex2<int>::complex2(int, int)' 

/home/.../main.cpp:11: error: undefined reference to `complex2<int>::Im() const' 

/home/...main.cpp:11: error: undefined reference to `complex2<int>::Re() const' 

:-1: error: collect2: error: ld returned 1 exit status 

有沒有人看到我們如何做到這一點?

回答