このエラーに関する質問は繰り返し聞かれましたが、これまでの回答は私の問題を解決するものではありません。"抽象クラス型のオブジェクトを割り当てる"エラーすべての関数に実装があります
私は純粋な抽象クラスITile
あります
class ITile {
public:
virtual ~ITile() {}
virtual void display() = 0;
virtual bool isWalkable() = 0;
virtual bool isGoal() = 0;
};
そして、すべてのようにように、これらの機能を実装する3つのサブクラス:
Floor.h
#include "ITile.h"
class Floor : public ITile {
public:
Floor();
virtual ~Floor();
virtual void display() override;
virtual bool isWalkable() override;
virtual bool isGoal() override;
};
Floor.cppを
#include "Floor.h"
#include <iostream>
using namespace std;
Floor::Floor() {}
Floor::~Floor() {}
void Floor::display() {
cout << " ";
}
bool Floor::isWalkable() {
return true;
}
bool Floor::isGoal() {
return false;
}
私は次の出力を取得し、プロジェクト全体のコンパイルしようとしている:
g++ -std=c++0x -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"src/main.d" -MT"src/main.d" -o "src/main.o" "../src/main.cpp"
In file included from ../src/main.cpp:1:
In file included from ../src/board.h:1:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/vector:265:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/__bit_reference:15:
In file included from /Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/algorithm:627:
/Library/Developer/CommandLineTools/usr/bin/../include/c++/v1/memory:1641:31: error: allocating an object of abstract class type 'ITile'
::new((void*)__p) _Up(_VSTD::forward<_Args>(__args)...);
[...]
...ノートの束が続いています。しかし、問題は、私が推測すると、上記の最後の行のエラーです。
このように、algorithm
、memory
などのファイルは正確に何ですか?どうすればこのエラーを取り除くことができますか?
私はMac OS X(Mavericks)のC/C++プラグインでEclipse Lunaを開発者コマンドラインツールで使用しています。ご要望に応じてより多くの情報を喜んで提供します。
ありがとうございます!
あなたはあなたの例では少しも最小限に行ってきました。投稿してください[mcve] – NathanOliver
@ NathanOliver:あまりにも少なすぎないです。それは不完全だということです。彼はすべてを結びつける 'main'関数を欠いている。ほぼ確実に 'ベクトル'を使用しているもの。 –
@ NathanOliverまあ、私自身は他の人の完全なプロジェクトを通して読書を憎む。私はこれが私の間違いを見つけるのに十分かもしれないと思った。他に何を投稿すべきですか? –