Complex.h
#pragma once
#include<iostream>
using namespace std;
template<class T>
class Complex
{
public:
Complex() { real = 0; imag = 0; }
~Complex() {}
Complex(T r, T i) { real = r; imag = i; }
Complex<T> complex_add(Complex<T>& c);
void display();
private:
T real;
T imag;
};
template<class T>
void Complex<T>::display()
{
cout << "real:" << real << ',' << "imag" << imag << endl;
}
Complex.cpp
#include"Complex.h"
template<class T>
Complex<T> Complex<T>::complex_add(Complex<T>& c2)
{
Complex<T> c;
c.real = real + c2.real;
c.imag = imag + c2.imag;
return c;
}
main.cpp
#include"Complex.h"
int main()
{
Complex<int> c1(2, 3), c2(1, 2);
c1.complex_add(c2);
c1.display();
system("pause");
return 0;
}
错误提示:
错误 LNK2001 无法解析的外部符号 “public: class Complex __thiscall Complex::complex_add(class Complex &)” (?complex_add@?$Complex@H@@QAE?AV1@AAV1@@Z) Complex D:\OneDrive\vs2015\我的程序库\我的程序库\Complex\main.obj 1
错误 LNK1120 1 个无法解析的外部命令 Complex D:\OneDrive\vs2015\我的程序库\我的程序库\Release\Complex.exe 1