class Interface
{
};
class Class : public Interface
{
};
class Foo
{
public:
std::vector<std::shared_ptr<Interface>>& GetInterfaces()
{
return *(std::vector<std::shared_ptr<Interface>>*)(&m_data);
//return m_data;
}
private:
std::vector<std::shared_ptr<Class>> m_data;
};
これは動作しますが、醜く怖いです。 より良い/より安全な方法がありますか?モジュールFoo
が属しているので、私はClass
年代、Interface
(およびFoo::GetInterfaces()
)のみInterface
機能について知っておくべき別のモジュールと対話するために実装されていて、完全に機能タイプstd::vector<std::shared_ptr<Interface>>
のm_data
を作成する必要はありません。派生クラスのshared_ptrsのベクトルを基底クラスのshare_ptrsのベクトルにキャストする方法
ここに何か不明な点がある場合は、私には意味がありますが、私はしばらくの間問題に頭を抱えています。
そのような状況で何をするつもり共有ポインタは何ですか?私は共有ポインタの2つの異なるタイプ間でポインタを共有したいと思っているのか分かりません! –
@MichaelKohneいいえこれは大丈夫です。 – 111111
ああ、勝利のセマンティクスを移動!値で返さなければなりません。 –