Я хочу получить указатель на конструктор объекта (именно object, а не class), дальше передать его параметром куда-то, и применить этот конструктор для инициализации объекта. Как это сделать (если это вообще возможно)? Чисто гипотетически это возможно, но как это написать на паскале, у меня пока даже идей нет.
Не надо писать, что я хочу странного, мне это нужно для реализации фабрики и я вполне осознаю опасности, связанные с непрямым вызовом конструктора.
Что забавно, но следующий код
- Код: Выделить всё
{$MODE OBJFPC}
type
TMyObject = object
constructor Init;
end;
constructor TMyObject.Init;
begin
end;
var
P: function: QWordBool of object;
begin
P := @TMyObject(nil^).Init;
end.
выдаёт весьма странную ошибку
- Код: Выделить всё
constructor.pas(15,8) Error: Incompatible types: got "PROGRAM.<procedure variable type of function:QWordBool of object;Register>" expected "PROGRAM.<procedure variable type of function:QWordBool of object;Register>"
Что бы это могло значить?