typedef MyModule* EntryArea(); typedef void DestroyArea(MyModule*); struct MyStruct { MyModule* Object; void* DLHandle; EntryArea* Entry; DestroyArea* Delete; }; class ParentClass { private: struct MyStruct Classes[5]; public: void Load() [ Classes[0].DLHandle = dlopen(PATHTO.SO,RTLD_NOW); Classes[0].Entry = (EntryArea*) dlsym(Classes[0].DLHandle,"create"); Classes[0].Delete = (DestroyArea*) dlsym(Classes[0].DLHandle,"destroy"); Classes[0].Object = Classes[0].Entry(); } }; int main() { ParentClass clClass; MyClass* Child; Child = clClass.Init(); }