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功能的单独模块交互。
如果这里有任何不清楚的地方,请告诉我,这对我来说很有意义,但我一直在努力解决这个问题。