У меня есть разделяемая библиотека lib.so
, содержащая класс Foo
. Я динамически загружаю (с dlopen
в UNIX) lib.so
. После загрузки я хочу создать экземпляр Foo
.
Могу ли я просто использовать оператор new
для создания объекта Foo
, или мне придется создать экспортированный фабричный метод, помещенный в lib.so
, который создаст этот объект для меня?
На самом деле, вопрос в том, экспортируется ли конструктор Foo
и можно ли его просто вызвать с помощью оператора new
. Я думаю, что все классы и методы в общей библиотеке в UNIX по умолчанию экспортируются, и мне не нужно экспортировать их явно, как в Windows dll.
Помимо сокрытия способа создания (и, возможно, инициализации) объекта Foo
, есть ли другие причины для использования фабричного метода при создании объекта класса, содержащегося в разделяемой библиотеке?