首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >复制派生类的构造函数,而不测试所有类型?

复制派生类的构造函数,而不测试所有类型?
EN

Stack Overflow用户
提问于 2018-08-01 08:44:15
回答 1查看 55关注 0票数 1

我有一个类,它包含一个std::vector,包含相同基类的许多元素,但类型不同。现在,我想为它实现一个复制构造函数。

有很多不同类型的对象,那么有一个更好的方法比获取所有的类型,并有一个庞大的if-分支来复制它们吗?

代码语言:javascript
运行
复制
MyObject::MyObject(const MyObject &rhs)
{
    // copy all the parameters
    for(size_t i=0; i<rhs.m_parameters.size(); i++)
    {
        Parameter* p = rhs.m_parameters[i];
        if(dynamic_cast<ParameterType1*>(p) != NULL)
        {
            ParameterType1* p_old = dynamic_cast<ParameterType1*>(p);
            ParameterType1* p_new = new ParameterType1(*p_old);
            m_parameters.push_back(p_new);
        }
        else if(dynamic_cast<ParameterType2*>(p) != NULL)
        {
            ParameterType2* p_old = dynamic_cast<ParameterType2*>(p);
            ParameterType2* p_new = new ParameterType2(*p_old, this);
            m_parameters.push_back(p_new);
        }
        else if(dynamic_cast<ParameterType3*>(p) != NULL)
        {
            ParameterType3* p_old = dynamic_cast<ParameterType3*>(p);
            ParameterType3* p_new = new ParameterType3(*p_old, this);
            m_parameters.push_back(p_new);
        }    
        else if
        ....
        ....
    }
}
EN

Stack Overflow用户

回答已采纳

发布于 2018-08-01 08:51:21

在基类中创建虚拟方法Parameter* makeCopy(),并为每个子类实现它,并使用m_parameters.push_back(p->makeCopy())

票数 2
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51628947

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档