我希望有人可以指出我正确的方向,找出为什么我收到以下错误:
$~/display/triangleDisplayable.cc:4: undefined reference to `Displayable::Displayable()'
Run Code Online (Sandbox Code Playgroud)
我试图抽象一个类,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;
};
Run Code Online (Sandbox Code Playgroud)
和"triangleDisplayable.h"
#include "Displayable.h"
class triangleDisplayable : public Displayable
{
public:
triangleDisplayable();
int getSizeOfArrays();
private:
void init();
int getSizeOfPointsArray();
int getSizeOfNormalsArray();
};
Run Code Online (Sandbox Code Playgroud)
然后我有"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;
}
Run Code Online (Sandbox Code Playgroud)
和"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;
}
Run Code Online (Sandbox Code Playgroud)
我一直在尝试按照各种教程学习如何在C++中进行抽象,但我还没有真正找到任何有用的解决方案.我相信我所有#include的都是正确的,我读到的是一个常见的问题.错误消息似乎表明问题是该行
triangleDisplayable::triangleDisplayable() : Displayable() {
}
Run Code Online (Sandbox Code Playgroud)
我试图编译没有: Displayable()但我得到相同的错误.我的头文件中的语法可能有问题吗?