Создание объекта класса из его местоположения в общем объекте

В C вы можете динамически связать общий объект с помощью dlopen() и использовать dlsym(), чтобы найти адрес определенного символа (функции) и назначить его указателю на функцию.

В C++, если вы знаете адрес конструктора класса, сможете ли вы создать из него новый объект? Я понимаю, что использование статического метода, который возвращает объект класса, является соглашением для динамической компоновки в С++.

Мне было любопытно, можно ли создать объект из адреса конструктора. Если да, то можете привести пример?

заранее спасибо


person KodeWarrior    schedule 30.09.2012    source источник


Ответы (1)


Вы не можете. Проблема в том, что вы не можете вызвать конструктор напрямую; все вызовы конструктора неявно генерируются компилятором. Это также означает, что вы не можете вызывать его через указатель функции.

Я также просто попытался взять адрес конструктора, который тоже не сработал (хотя это был просто быстрый взлом, не могу быть уверен, что он действительно действителен) - поскольку конструкторы не имеют возвращаемого типа, следующий вопрос заключался бы в том, как написать тип для этого указателя на функцию.

person Christian Stieber    schedule 30.09.2012