提示コードですが基底クラスで純枠仮想関数を用意してそれを派生クラスで定義していてその派生クラスを基底クラスのポインタでその純枠仮想関数を参照出来ないのですがこれは何が原因なのでしょうか?
提示コードの"ここです"のコードですがなぜ参照出来ないのでしょうか?"これは出来る"のコード部では普通に参照出来るのですが
cpp
1#include <iostream> 2#include <vector> 3 4#define PI ( (double)3.14159265359 ) //PI 5#define RADIAN ( 360.0 / (PI * 2.0 ) ) //ラジアンを度数で取得 6 7 8class Actor 9{ 10 int positoin; 11 12public: 13 14 virtual void Draw() = 0; 15 16 Actor() 17 { 18 std::cout << "actor" << std::endl; 19 } 20}; 21 22class player : public Actor 23{ 24public: 25 26 void Draw() 27 { 28 std::cout << "draw()" << std::endl; 29 } 30 31 32 player() : Actor() 33 { 34 35 } 36 37}; 38 39 40 41int main() 42{ 43 44 std::shared_ptr<std::vector<std::shared_ptr<Actor>>> actor = std::make_shared<std::vector<std::shared_ptr<Actor>>>(0); 45 46 std::shared_ptr<Actor> ac = std::make_shared<player>(); 47 ac->Draw();//これは出来る。 48 49 50 actor->push_back(ac); 51 for (std::vector<std::shared_ptr<Actor>>::const_iterator itr = actor->begin(); itr != actor->end(); itr++) 52 { 53 //itr->Draw();//////////////////////ここです。 54 } 55 return 0; 56}
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。