最近我正在尝试学习包含多个文件的班级模板 但是我坚持在这篇文章的最后提到的这个错误。 请帮助我解决此错误。
main.cpp
#include<iostream>
#include"Calcu.h"
int main()
{
Calcu <int>calc;
std::cout<<calc.add(1,3)<<std::endl;
std::cout<<calc.multiply(5, 6);
return 0;
}
calcu.h
#ifndef CALC_H
#define CALC_H
template <typename T>
class Calcu
{
private:
T a;
T b;
public:
T add(T, T);
T multiply(T, T);
};
#endif
calcu.cpp
#include<iostream>
#include"Calcu.h"
template <typename T> T Calcu<T>::add(T a, T b)
{
return a+b;
}
template <typename T> T Calcu<T>::multiply(T a, T b)
{
return a*b;
}
错误:
gnu@sys:~/Documents/Codes/other/CPP/mutliFile$ g++ main.cpp Calcu.cpp
/tmp/ccZrWg6I.o: In function `main':
main.cpp:(.text+0x29): undefined reference to `Calcu<int>::add(int, int)'
main.cpp:(.text+0x62): undefined reference to `Calcu<int>::multiply(int, int)'
collect2: error: ld returned 1 exit status
我不知道下一步该怎么做。