Дизайн API: направление и имя функции копирования объекта от объекта

Класс 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Тем не менее, не оставляйте никаких сомнений относительно направления копирования.

0

Решение

Довольно странно пытаться скопировать только одно свойство, но я не из тех, кто ставит это под сомнение.

Почему бы просто не сделать:

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

Это будет соответствовать стандарту копирования, который определяется как

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

и, как вы можете видеть, принимающая сторона также находится слева.

Кроме этого, я не думаю, что есть какие-либо стандарты для попытки скопировать только одно свойство другого объекта.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]