Класс T
должен предоставить функцию-член, которая копирует некоторые, но не все переменные-члены (минимальный пример: только одна переменная X
) из одного объекта типа T
к другому объекту типа T
, Есть два возможных решения, копирование от и копирование в:
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
Тем не менее, не оставляйте никаких сомнений относительно направления копирования.
Довольно странно пытаться скопировать только одно свойство, но я не из тех, кто ставит это под сомнение.
Почему бы просто не сделать:
void copy_<property_name>( const T& other ) { <property_name> = other.get_<property_name>; }
Это будет соответствовать стандарту копирования, который определяется как
T& operator=(const T& other)
{
//copy
//return
}
и, как вы можете видеть, принимающая сторона также находится слева.
Кроме этого, я не думаю, что есть какие-либо стандарты для попытки скопировать только одно свойство другого объекта.
Других решений пока нет …