所以我有一個集合類Foo
它採取可移動和(間接)可複製的論點(一類稱爲Image_t
和std::unique_ptr<Map>
,和地圖可以克隆自己)。排列可移動工程
我想給他們如何創建類的最終用戶的靈活性。所以我有一個「複製式」構造函數和一個「移動式」構造函數:
typdef std::unique_ptr<Map> MapPtr;
///
///@brief Copy build constructor
///
Foo(const Image_t& image, const MapPtr& map_ptr) :
image_(image),
geo_locatormap_(map_ptr->clone())
{
}
///
///@brief Move build constructor
///
Foo(Image_t&& image, MapPtr&& map_ptr) :
image_(std::move(image))
geo_locatormap_(std::move(map_ptr))
{
}
現在理想情況下,我想有Foo(const Image_t& image, MapPtr&& map_ptr)
和Foo(Image_t&& image, const MapPtr& map_ptr)
爲好,但我喜歡這種感覺被複制努力。有沒有快速的方法來做到這一點?或者這種類型的構造函數皺起了眉頭?
很不錯的答案。我沒有想到在我的例子中使用外部幫助函數。你的清潔很多。 – bstamour
@bstamour謝謝。我經常使用小助手,因爲它們也可以更好地擴展,如果您有三個或四個參數,會發生什麼情況。 –
非常真實。我將把這個想法添加到我的工具箱中;) – bstamour