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;
};
这有效,但丑陋和可怕。有更好/更安全的方法吗?我不想使用m_data
类型std::vector<std::shared_ptr<Interface>>
,因为该模块Foo
属于完全与Class
's 一起工作,Interface
(和Foo::GetInterfaces()
)被实现为与只应该知道Interface
功能的单独模块交互。
如果这里有任何不清楚的地方,请告诉我,这对我来说很有意义,但我一直在努力解决这个问题。