У меня есть общий объект my_lib.cc
, который определяет в своем заголовке класс вместе с фабричной функцией:
extern Foo* GetFoo():
class Foo {
public:
Foo() {}
virtual ~Foo() {}
};
Теперь я хотел бы, чтобы приложение, использующее библиотеку main.cc
, содержало:
#include "my_lib.h"
class Bar : public Foo {
// ...
};
Foo* GetFoo() {
return new Bar();
}
Дело в том, что когда код внутри общего объекта должен создать Foo
, он будет вызывать метод, предоставляемый приложением, динамически связывающим его. Возможно ли это сделать? Как правило, приложение зависит от символов, предоставляемых общими объектами, но возможно ли, чтобы общий объект зависел от символа в двоичном файле, который динамически загружает его?