获取未定义的引用错误

Getting an undefined reference error

本文关键字:错误 引用 未定义 获取      更新时间:2023-10-16

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

$~/display/triangleDisplayable.cc:4: undefined reference to `Displayable::Displayable()'

我试图抽象一个类Displayable,并拥有一个实现其方法的类triangleDisplayable。我有两个头文件是"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;
    };

和"triangleDisplayable.h"

    #include "Displayable.h"
    class triangleDisplayable : public Displayable 
    {
    public:
        triangleDisplayable();
        int getSizeOfArrays();
    private:
        void init();
        int getSizeOfPointsArray();
        int getSizeOfNormalsArray();
    };

然后我有了"Displayable.cc"

    #include <iostream>
    #include "Displayable.h"
    Displayable::Displayable() {
        std::cout << "testing Displayable constructor" << std::endl;
    }
    void Displayable:display(int size) {
    }
    int main () {
        return 0;
    }

和"triangleDisplayable.cc"

    #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;
    }

我一直在尝试跟随各种教程学习如何在C++中进行抽象,但我并没有找到任何有用的解决方案。我相信我所有的#include都是正确的,我读到这是一个常见的问题。错误消息似乎表明问题出在线路上

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

我曾尝试在没有: Displayable()的情况下进行编译,但我遇到了同样的错误。我的头文件中的语法可能有问题吗?

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