假设我有一个构造函数和一个委托构造函数
SomeClass(const std::string&& _name) : obj_needs_construction(100), name(_name) {}
SomeClass(const std::string& _name) : SomeClass(_name) {}
但两者都使用相同的类型,我已经看过很多解决方案,但它们似乎都在运行,因为它们制作了不同的类型,但在我的情况下不会起作用。我该如何解决这个问题?
感谢。
答案 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)) {}