Я хочу пояснить, что конструктор моего класса A
будет владеть переданным параметром Data
. Очевидная вещь, чтобы сделать, это принять unique_ptr
по значению:Примите участие в параметре по rvalue-reference
class A
{
public:
A(std::unique_ptr<Data> data) : _data(std::move(data)) { }
std::unique_ptr<Data> _data;
};
Однако, для моего потребительной случае, нет никаких причин, почему Data
должен быть указателем, так как тип значения будет достаточно. Единственный оставшийся вариант, который я мог думать, чтобы сделать действительно ясно, что Data
будет принадлежать A
является передача по RValue-ссылки:
class A
{
public:
A(Data&& data) : _data(std::move(data)) { }
Data _data;
};
Является ли это правильным способом сигнализировать собственности или есть лучшие варианты, чтобы сделать это без использования unique_ptr
?
Почему компания взяла на себя ответственность? –
Я бы сделал конструктор явным –
@IvanRubinson По многим причинам, таким как Injection Dependency. –