我在网上遇到了这个问题,但不相信可变数量的参数或使用桥接模式解决方案,因此我在这里问这个问题。提前致谢。
class B
{
public:
B(args_1);
B(args_2);
// and many constructors with different arg lists
};
class D : public B
{
public:
D(args_1) : B(args_1) {}
D(args_2) : B(args_2) {}
// and many constructors with different signatures similarly implemented
// some additional stuff specific to D
};
假设 B 的构造函数的参数列表相当长,并且可能是 将来会经常修改,在这种情况下 D 的构造函数有 进行相应的重新编码。通过复制粘贴复制更新 肯定会在这里工作。您能否提出一个更好的方法,以便 更新可以在一处完成,无需复制粘贴吗?
最佳答案
当然,使用组合而不是继承:
class D{
public:
D(auto_ptr<B> _obj) : mB(_obj){}
//member functions which delegate to the calls of "B"
//member functions specific to "D"
private:
scoped_ptr<B> mB;
};
关于c++ - 具有不同参数的多个构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5234762/