将对象向量转换为指针向量

时间:2018-08-31 12:44:46

标签: c++ refactoring

我有一些类集: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));
        }
    }
};

这段代码似乎不合理且无效,但是我不知道如何在不重写遗留函数的情况下做到这一点。

0 个答案:

没有答案