@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
@Alexander1705
То, что вы написали, называется делегирующий конструктор. И это работает начиная со стандарта C++11.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Вы описали действие, которое делает конструктор копирования. Так что реализовывайте его.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы