base
私は 3 つのクラスを持っています: 最初は、派生クラスを持つ純粋な仮想基本クラス derived1
、derived2
...
2番目 foo
は、基本クラスへのスマートptrを保持します
3 番目はスマート ptr を保持しfoo
、オーバーロードされたメンバー関数を持ちます。これは、foo の ptr が指す派生クラスに依存する必要があります。
これが作業コードです
#include<iostream>
#include<boost/shared_ptr.hpp>
using namespace std;
class base{
public:
base(){}
~base(){}
virtual void FuncDer()=0;
};
class derived1 : public base{
derived1(){}
virtual void FuncDer(){
cout<<"derived function1!"<<endl;
}
};
class derived2 : public base{
derived2(){}
virtual void FuncDer(){
cout<<"derived function2!"<<endl;
}
};
class foo {
public:
foo();
~foo();
boost::shared_ptr<base> get_base_ptr(){
return base_obj;
}
private:
boost::shared_ptr<base> base_obj;
};
class bar {
public:
bar();
~bar();
void callfunc(){
func(foo_ptr->get_base_ptr());
}
private:
boost::shared_ptr<foo> foo_ptr;
void func(boost::shared_ptr<derived1>);
void func(boost::shared_ptr<derived2>);
};
int main()
{
cout<<"test"<<endl;
return 0;
}
ただし、これは一致するメンバー関数がないというエラーで失敗するようです。したがって、私の質問は、第一に、このアプローチに明らかに問題があるかどうか、第二に、このタイプの問題をより適切に処理する、より効率的な/オブジェクト指向の設計アプローチがあるかどうかです。