错误:对“Class :: Constructor”的未定义引用

时间:2017-11-14 09:59:47

标签: c++ templates inheritance

我有以下错误:

  

错误:对“Image2Grey :: Image2Grey(int,int)”的未定义引用

我有一个模板Image2和一个类Image2Grey:Image2

树枝是:

\-folder1/
    \image2.h
    \image2.hpp
    \image2Grey.cpp
    \image2Grey.hpp
\-folder2/
    \main.cpp

当我尝试创建一个新对象Image2Grey时,我有错误,就像我的构造函数不存在一样。我不明白我做错了什么。

这是我的代码:

/ ** main.cpp ** /

#include "../folder1/image2grey.hpp"
int main(int argc, char *argv[]) {
    Image2Grey img(6, 10);
    return 0;
}

/ ** image2.h ** /

template<typename T>
class Image2D {
    public:
        Image2D(int width, int height);
    protected:
        T *image;
};

/ ** image2.hpp ** /

#include "image2d.h"
template<typename T>
Image2D<T>::Image2D(int width, int height){
    image = new T[width * height];
}

/ ** image2grey.hpp ** /

#include "image2d.h"
class Image2Grey : Image2D<unsigned char> {
public:
    Image2Grey(int width, int height);

/ ** image2grey.cpp ** /

#include "image2grey.hpp"
Image2Grey::Image2Grey(int width, int height) :
    Image2D<unsigned char>(width, height) {}

如果你知道我为什么会有这个错误.. 感谢

0 个答案:

没有答案