2017-10-06 78 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 

有没有人看到我们如何做到这一点?

回答