如何在同一个构造函数中使用构造函数参数?

时间:2015-09-12 17:03:13

标签: c++ c++11

我想使用构造函数参数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

1 个答案:

答案 0 :(得分:6)

只需要没有语法糖(*):

Constructor (A a, B b)
  : a_(a), b_(b) {
  // ...
}
Constructor (A a)
  : Constructor (a, B(a)) {}

虽然这仅适用于C ++ 11,但该功能称为委派转发构造函数。

(*)"句法糖"这里确实不是正确的术语,因为它在语义上不等同于带有默认参数的构造函数。 (默认参数是 - 据我所知 - 在呼叫站点插入"普通"参数。)