我想使用构造函数参数some_function
作为其他构造函数参数的默认初始化参数,即some_other_function
:
SomeConstructor(SomeFunction some_function,
SomeOtherFunction some_other_function = SomeOtherFunction(some_function)) :
some_function_(some_function),
some_other_function_(some_other_function)
{...}
不幸的是,这会产生编译错误:
error: 'some_function' was not declared in this scope
答案 0 :(得分:6)
只需要没有语法糖(*):
Constructor (A a, B b)
: a_(a), b_(b) {
// ...
}
Constructor (A a)
: Constructor (a, B(a)) {}
虽然这仅适用于C ++ 11,但该功能称为委派或转发构造函数。
(*)"句法糖"这里确实不是正确的术语,因为它在语义上不等同于带有默认参数的构造函数。 (默认参数是 - 据我所知 - 在呼叫站点插入"普通"参数。)