Re[27]: Ошибка, если конструктор определен в h-файле (этюд?)
От: so5team https://stiffstream.com
Дата: 06.07.23 09:54
Оценка: +1
Здравствуйте, rg45, Вы писали:

S>>Это да. Просто хотелось понять, как Shmj умудрялся работать с экземплярами Class1, если в Class1 не было явно описанного пользователем конструктора.


R>Ну так, возможно, до него все работало и с автоматически сгенерированным конструктором.


"Но черт возьми, Холмс, как?"

Мне вот было любопытно, как в Class1 создается и инициализируется что-то связанное с Class2, при этом не имея определения Class2.
Но, похоже, там просто unique_ptr, который изначально пустой, а значение ему назначается позже. Что-то вроде:
class Class1 {
  std::unique_ptr<Class2> ptr_member_;

  void do_something(); // Реализовано в .cpp-файле.
  ...
};

void Class1::do_something() {
  if(!ptr_member_) ptr_member_ = std::make_unique<Class2>(...);
  ...
}

Тогда работа дефолтного, сгенерированного компилятором конструктора становится понятной.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.