多个构造函数继承
Multiple constructor inheritance
我正在尝试创建两个可以单独调用的较小的构造函数,然后创建一个更大的构造函数,允许您通过简单地调用其他两个构造函数来一次执行所有操作。
我的代码示例:
Foo::Foo(bool someVar, int someOtherVar, int fooBar) : Foo(someOtherVar, fooBar), Foo(someVar) {}
Foo::Foo(bool someVar) { this->_someVar = someVar; }
Foo::Foo(int someOtherVar, int fooBar) { this->_someOtherVar = someOtherVar + fooBar; }
我从中得到
In constructor 'Foo::Foo(bool, int, int)': error: mem-initializer for 'class Foo::Foo' follows constructor delegation Foo(someOtherVar, fooBar), Foo(someVar) { }
有什么问题吗?
如果你委托给构造函数,这是你在初始化列表中唯一能做的事情。从[class.base.init]/6:
mem-initializer-list可以使用任何class-or-decltype将其委托给构造函数类的另一个构造函数。它表示构造函数的类本身。如果mem-initializer-id指定构造函数的类,它应该是唯一的mem-initializer;
所以这是非法的:
Foo::Foo(bool someVar, int someOtherVar, int fooBar)
: Foo(someOtherVar, fooBar)
, Foo(someVar) //<== second mem-initializer is not allowed
{}
不能这样调用同一个类的两个构造函数。编写一个构造函数完成所有初始化,然后编写另外两个构造函数调用该构造函数并传递一些参数和一些默认值。
相关文章:
- 继承:构造函数,初始化C++11中基类的类C数组成员
- 如果我真的真的想从 STL 容器继承,并且我继承构造函数并删除新运算符,会发生什么?
- C++继承:构造函数中的字符串构造
- 继承构造函数和其他变量的解决方法
- 带有此指针的模板类多重继承构造函数不起作用?
- 虚拟继承构造函数的组装
- C++继承构造函数的可见性
- 继承构造函数(ISO 2011 SEC 12.9第7段)
- 没有C 11的继承构造函数
- 使用关键字继承构造函数时出乎意料的行为
- 继承构造函数不允许类似数组的初始化
- 从基于QObject的类继承构造函数
- 继承构造函数并提供新的重载:无参数基构造函数似乎不参与重载解析
- C++多继承构造函数
- 具有独占继承构造函数的类的值初始化
- C++ 继承构造函数重写
- 继承构造函数与转发
- 默认情况下继承构造函数 noexcept(true)
- 有没有办法在继承构造函数时访问初始值设定项列表
- 从 std::function 继承构造函数时"function returning a function"