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;
};
這是有效的,但是很醜陋和可怕。 有更好/更安全的方法嗎?我不想讓std::vector<std::shared_ptr<Interface>>
類型的m_data
因爲模塊Foo
屬於完全用Class
的,Interface
(和Foo::GetInterfaces()
)實現與一個單獨的模塊,它應該只瞭解Interface
功能交互工作。如何將派生類的shared_ptrs的向量投影到基類的share_ptrs的向量
讓我知道這裏有什麼不清楚的地方,這對我來說很合理,但我一直在反對這個問題。
什麼是共享指針會在這種情況下怎麼辦?我不確定它將要共享兩種不同類型的共享指針之間的指針! – 2013-02-19 18:46:39
@MichaelKohne不,這很好。 – 111111 2013-02-19 18:47:21
啊,移動語義贏得勝利!應該讓價值恢復正常。 – 2013-02-19 18:48:09