私は誰かが私は次のようなエラーになっています理由を把握するために正しい方向に私を指すことができます期待しています:取得未定義の参照エラー
$~/display/triangleDisplayable.cc:4: undefined reference to `Displayable::Displayable()'
私は抽象クラスDisplayable
にしようとしているのとクラスを持ってtriangleDisplayable
そのメソッドを実装しています。私が持っている2つのヘッダファイルは、 "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
のすべてが正しいと信じています。私はこれを読むのはよくある問題です。エラーメッセージは、問題が、私は: Displayable()
なしでコンパイルしようとしたライン
triangleDisplayable::triangleDisplayable() : Displayable() {
}
であることを示しているようだが、私は同じエラーを取得します。ヘッダーファイルに私の構文に問題がありますか?
Displayable.ccをコンパイルしてオブジェクトファイルにリンクしましたか? – PlasmaHH
Displayable()の代わりにコンストラクタを定義してみてください。ディスプレイ可能(){}; Displayable.hファイルに保存します。これはすべてのサブクラスコンストラクタで呼び出されます – Pramod
私は2つのソースファイルを一緒にリンクしていませんでした。助けてくれてありがとう! –