如何使用构造函数委托在C ++中使用命名构造函数?

时间:2016-07-01 04:40:57

标签: c++ class types constructor delegation

假设我有一个构造函数和一个委托构造函数

SomeClass(const std::string&& _name) : obj_needs_construction(100), name(_name) {}
SomeClass(const std::string& _name) : SomeClass(_name) {}

但两者都使用相同的类型,我已经看过很多解决方案,但它们似乎都在运行,因为它们制作了不同的类型,但在我的情况下不会起作用。我该如何解决这个问题?

感谢。

2 个答案:

答案 0 :(得分:3)

替换

SomeClass(const std::string&& _name) : obj_needs_construction(100), name(_name) {}
SomeClass(const std::string& _name) : SomeClass(_name) {}

...只是

SomeClass( std::string const& name )
    : obj_needs_construction( 100 )
    , name_( name )
{}

就是这样。它可以很好地为临时工作作为实际的论点。

答案 1 :(得分:1)

SomeClass(const std::string& _name) : SomeClass(std::move(_name)) {}