出现此错误时进行堆栈:未定义对`Calcu <int> :: add(int,int)'的引用

时间:2018-07-10 18:34:59

标签: c++ templates

最近我正在尝试学习包含多个文件的班级模板 但是我坚持在这篇文章的最后提到的这个错误。 请帮助我解决此错误。

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

我不知道下一步该怎么做。

0 个答案:

没有答案