我有一些类集:Object,AnotherObject,OtherObject等。我也有一些旧代码。像这样:
std::vector<Object> getObjectsFromSomeSource();
std::vector<AnotherObject> getAnotherObjectsFromSomeSource();
std::vector<OtherObject> getOtherObjectsFromSomeSource();
...
我重构了这组类,现在它们具有相同的接口。现在,我需要创建一个与指向该接口的指针的向量一起工作的类。问题是我可以这样做吗(此代码正确吗?代码中是否有任何陷阱?也许您可以提供更好的解决方案):
class ObjectContainer
{
std::vector<std::shared_ptr<IObject>> m_objectVec;
public:
std::vector<std::shared_ptr<IObject> > objectVec() const;
void setObjectVec(const std::vector<std::shared_ptr<IObject> > &objectVec);
template <typename T>
void setObjectVec(const std::vector<T>& objectVec)
{
for (const T& item: objectVec)
{
m_objectVec.push_back(std::make_shared<T>(item));
}
}
};
这段代码似乎不合理且无效,但是我不知道如何在不重写遗留函数的情况下做到这一点。