Задать вопрос
@JustSokol
newby programmer

Как в конструкторе скопировать все данные в создаваемый объект из объекта того же типа, получаемого из функции в этом конструкторе?

Есть класс (допустим обертка массива QString), назовем его MyClassType.
Есть функция которая из другого типа данных (назовем его MyDataType) конструирует объект типа MyClassType:
MyClassType makeMyClassFromData (MyDataType data) {...};

Хочу сделать конструктор MyClassType (MyDataType data);
В котором вызывается эта функция и получаемый с помощью неё объект становился создаваемым.
Копировать отдельно по полям кажется нудным и неправильным.

Как то можно в конструкторе полностью заменить все данные создаваемого объекта, всеми данными объекта, полученного в конструкторе ?
Поидее это конструткором копирования делается. Но как его применить в нашем конструкторе. Вроде пробовал:
MyClassType (MyDataType data) : MyClassType(makeMyClassFromData(data)) {
;
}

Сказал что нельзя так.
illegal member initialization: 'MyClassType' is not a base or member


Или для этого просто нужно явно задать конструктор копирования? ...
Попробовал задать конструктор копирования - та же ошибка
illegal member initialization: 'MyClassType' is not a base or member
.
  • Вопрос задан
  • 176 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
@Alexander1705
То, что вы написали, называется делегирующий конструктор. И это работает начиная со стандарта C++11.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Вы описали действие, которое делает конструктор копирования. Так что реализовывайте его.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы