2016-01-07 48 views
0

T應提供一個成員函數,用於將一個但不是全部成員變量(最小的示例:只有一個變量X)從一個T類型的對象複製到另一個對象類型T。有兩個可能的解決方案,複製和複製API設計:對象到對象複製函數的方向和名稱

class T { 
    some_type X; 
    [...] 
    void copy_X_from_other(const T& other) { X = other.X; } 
    void copy_X_to_other (T& other) const { other.X = X; } 
}; 

有沒有理由喜歡一個變體比其他?有指導路線,最佳實踐例子還是其他?

該函數應該如何命名?一個理想的名字會比copy_(from|to)_other短得多,但是對複製的方向沒有疑問。

回答

0

這是一個非常奇怪的事情,試圖複製一個屬性,但我不是一個人質疑。

爲什麼不只是做:

void copy_<property_name>(const T& other) { <property_name> = other.get_<property_name>; } 

這將遵循拷貝賦值,它被定義爲

T& operator=(const T& other) 
{ 
    //copy 
    //return 
} 

的標準,你可以看到,接受方的留在這也是。

除此之外,我不認爲有任何標準試圖只複製另一個對象的一個​​屬性。

+0

對不起,我一直誤導你寫「一個屬性」,這是對我的真正問題的極端簡化。我會編輯這個問題,使其更清晰。 –

+0

該解決方案仍然適用,只需添加更多的成員變量,對吧? 除非你想選擇你想要複製的成員變量,那你真正想做什麼? – user1234141515134321321513