2016-07-01 71 views
1

說我有一個構造函數和一個委託構造如何在使用構造函數委託的C++中使用命名構造函數?

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

但兩者都使用相同類型的,我見過很多解決方案,但他們似乎都工作,因爲它們使不同類型,但不會在工作我的情況。我該如何解決這個問題?

謝謝。

+0

'const std :: string &&'是非常沒用的。你想達到什麼目的? –

+0

如果我只是爲構造函數使用該字符串,我不再需要它了?或者無論如何它會被優化? –

回答

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

這可行,但它可能不值得使用代表,因爲它使我的代碼更加混亂,這與我的目標相反。 –

+0

@ThomasStiteler,那是你的電話。 –

+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) 
{} 

就是這樣。它將作爲實際參數很好地用於臨時對象。

+0

我的示例只包含一個構造函數,但實際上我有更多的工作,並且清理代碼我使用委託構造函數,所以這就是爲什麼我不只是使用它。 –

+0

那麼,你不會得到有關你甚至沒有提到的問題的答案。 –

相關問題