глубокая копия для C ++ boost :: shared_ptr

Я пытаюсь сделать глубокое копирование для C ++ boost :: shared_ptr.

struct A{
boost::shared_ptr<const Data> dataPtr;

A(const A& aSource) {
dataPtr.reset(new const Data);
*dataPtr  = *(aSource.dataPtr);
};

Но я получил ошибку:
ошибка: неинициализированный const в ‘new’ of ‘const struct A.

Если я не хочу бросать const, как справиться с этим?

Любая помощь будет оценена.

Спасибо !

2

Решение

Это потому, что вы пытаетесь изменить (в частности, присвоить) значение через const ссылка на него (потому что это то, что разыменовывает shared_ptr в const дает тебе). если бы Data имеет конструктор копирования, вы должны переписать вашу программу следующим образом:

struct A
{
boost::shared_ptr<const Data> dataPtr;

A(A const& aSource)
{
dataPtr.reset(new Data(*(aSource.dataPtr)));
}
};
5

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

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

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