c++ - 具有不同参数的多个构造函数

标签 c++

我在网上遇到了这个问题,但不相信可变数量的参数或使用桥接模式解决方案,因此我在这里问这个问题。提前致谢。

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/

相关文章:

c++ - 无法解决 "Undefined reference to ..."错误

c++ - 没有得到 ASCII 数字 =7 的字符串打印输出

C++迭代器循环与索引循环

c++ - 类具有带有动态数组成员的类

c++ - 创建自定义数据类型 C++

c++ - 有没有办法解决供应商引入的#define?

c++ - 为什么定义析构函数会删除隐式定义的移动赋值运算符?

c++ - Boost last_write_time 更改最后写入时间值

c++ - 线程局部变量的初始化

c++ - 由 ref 传递给函数的 vector 自动取消分配