Class 带模板的简单类

Class 带模板的简单类,class,templates,Class,Templates,我们正在尝试编写一个非常简单的类,以复数jsut为例,我们没有走多远 下面是我们的3个文件 复合物2.h complex2.cpp main.cpp 从Qt运行上述命令,将显示错误消息 /home...main.cpp:10: error: undefined reference to `complex2<int>::complex2(int, int)' /home/.../main.cpp:11: error: undefined reference to `complex2&

我们正在尝试编写一个非常简单的类,以复数jsut为例,我们没有走多远

下面是我们的3个文件

复合物2.h

complex2.cpp

main.cpp

从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

有人知道我们如何才能做到这一点吗?

我认为这篇文章解决了你的问题:

模板类在头文件和源文件之间拆分的方式有些棘手

问候

#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;}
#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;
}
/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