C++ 获取未定义的引用错误

C++ 获取未定义的引用错误,c++,C++,我希望有人能给我指出正确的方向,找出我为什么会出现以下错误: $~/display/triangleDisplayable.cc:4: undefined reference to `Displayable::Displayable()' 我试图抽象一个类displaybable,并拥有一个实现其方法的类triangledisplaybable。我拥有的两个头文件是“displaybable.h”: 和“三角形显示.h” 然后我有了“displaybable.cc” 我试图在没有:Displa

我希望有人能给我指出正确的方向,找出我为什么会出现以下错误:

$~/display/triangleDisplayable.cc:4: undefined reference to `Displayable::Displayable()'
我试图抽象一个类
displaybable
,并拥有一个实现其方法的类
triangledisplaybable
。我拥有的两个头文件是“displaybable.h”:

和“三角形显示.h”

然后我有了“displaybable.cc”


我试图在没有
:Displayable()
的情况下编译,但我得到了相同的错误。头文件中的语法可能有问题吗?

否,错误在工具调用中。您需要将两个源文件链接在一起(例如
g++-o foo a.cc b.cc
)。并删除一个
函数,因为不能有两个不同的函数。

否,错误在工具调用中。您需要将两个源文件链接在一起(例如
g++-o foo a.cc b.cc
)。并删除一个
函数,因为不能有两个不同的函数。

是否编译Displayable.cc并链接到目标文件?请尝试定义构造函数。。i、 e.而不是可显示();尝试Displayable(){};在可显示的.h文件中。这将在所有子类构造函数中调用。我没有将两个源文件链接在一起。谢谢你的帮助!是否编译Displayable.cc并链接到对象文件?请尝试定义构造函数。。i、 e.而不是可显示();尝试Displayable(){};在可显示的.h文件中。这将在所有子类构造函数中调用。我没有将两个源文件链接在一起。谢谢你的帮助!谢谢你,效果很好!我真不敢相信我没听清楚这两个主要功能。谢谢你,真是太棒了!我真不敢相信我没有领会这两个主要功能。
    class Displayable {

    public:
        Displayable();

        virtual int getSizeOfArrays() = 0;
        void display(int size);

    private:
        virtual void init() = 0;
        virtual int getSizeOfPointsArray() = 0;
        virtual int getSizeOfNormalsArray() = 0;

    };
    #include "Displayable.h"

    class triangleDisplayable : public Displayable 
    {

    public:
        triangleDisplayable();
        int getSizeOfArrays();

    private:
        void init();
        int getSizeOfPointsArray();
        int getSizeOfNormalsArray();

    };
    #include <iostream>
    #include "Displayable.h"

    Displayable::Displayable() {
        std::cout << "testing Displayable constructor" << std::endl;
    }

    void Displayable:display(int size) {
    }

    int main () {
        return 0;
    }
    #include <iostream>
    #include "triangleDisplayable.h"

    triangleDisplayable::triangleDisplayable() : Displayable() {
    }

    int triangleDisplayable::getSizeOfArrays() {
        return 0;
    }

    void triangleDisplayable::init() {
    }

    int triangleDisplayable::getSizeOfPointsArray() {
        return 0;
    }

    int triangleDisplayable::getSizeOfNormalsArray() {
        return 0;
    }

    int main () {
        return 0;
    }
    triangleDisplayable::triangleDisplayable() : Displayable() {
    }