Re[4]: С++, как вызвать конструктор объекта по месту?
От: c-smile Канада http://terrainformatica.com
Дата: 21.01.14 17:05
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Здравствуйте, c-smile, Вы писали:


CS>>Контекст проблемы: http://stackoverflow.com/questions/21212379/changing-vtbl-of-existing-object-on-the-fly-dynamic-subclassing


К>А если не выклёвывать себе мозг всякими трюками, и сделать по-честному:


"По честному" это писать VTBL руками. С сигнатурами функций типа doIt(Data* _this, ) и пр.
В итоге получишь то что компилятор C++ и так делает, как ты сам сказал когда-то.

Вот про это

Base t(std::move(b));
Derived* d = new(&b)Derived(std::move(t));


я думал. Попробуй в members описать std::string поле.

Короче вместо Base(NO_INIT) конструкторов тебе нужно будет писать Base(Base &&moved) конструкторы. Ровно столько же.
И это всегда будет требовать temporary при конвертации и ненулевой CPU penalty.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.