gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:21:59 25 4
gpt4 key购买 nike

<分区>

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

确实有很多不同类型的对象,那么有没有比获取所有类型并有一个巨大的 if 分支来复制所有类型更好的方法呢?

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
....
....
}
}

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com