У меня есть пара классов, в которых мне нужно больше контроля над созданием члена, чем это предусмотрено в списках инициализации.
В одном классе мне нужна возможность повторить создание члена с другими аргументами, еслиисходная конструкция бросает.
Во втором классе мне нужно передать адрес объекта-члена другой функции, которая, в свою очередь, вызовет конструктор (посредством размещения new).Проблема здесь в том, что функция является черным ящиком, и я не знаю, что она передаст конструктору.
В обоих случаях требуется, чтобы объект-член содержался в содержащем объекте,не распределяется динамически.
Каков наилучший способ сделать это?
Редактировать
Я заметил вопрос " Можно ли отложить инициализацию члена конструктораbody?", который рекомендовал boost :: необязательный.Это не решило мою проблему по нескольким причинам.Во-первых, я не хочу откладывать инициализацию, просто имею больше контроля над ней.Во-вторых, boost :: option хранит дополнительный bool, указывающий, инициализирован ли объект, что в моем случае не требуется.Это, однако, заставило меня задуматься, и я нашел решение, которое я разместил ниже.