Container für verschiedene Pointer
-
keine Vorstellungskraft?
typedef std::map< PointerInfo, std::string > PluginContainer; PluginContainer m_container; void AddPluginPointer(PointerInfo & pi, const std::string & name) { m_container.insert(PluginContainer::value_type(pi, name)); } void AddPluginIBase(IBase *ptr, const std::string & name) { PointerInfo pi; pi.pointer = (void *)ptr; pi.pointer_type = PointerInfo::PointerType::PT_IBASE; AddPluginPointer(pi, name); } void AddPluginIClass(IClass *ptr, const std::string & name) { PointerInfo pi; pi.pointer = (void *)ptr; pi.pointer_type = PointerInfo::PointerType::PT_ICLASS; AddPluginPointer(pi, name); } void PluginAction() { PluginContainer::const_iterato iter; iter = m_container.begin(); while(iter != m_container.end()) { switch(iter->first.pointer_type) { case PointerInfo::PointerType::PT_IBASE: { IBase *ibase = (IBase *)iter->first.pointer; // mach was mit ibase } break; case PointerInfo::PointerType::PT_ICLASS: { IClass *iclass = (IClass *)iter->first.pointer; // mach was mit iclass } break; } ++iter; } }
-
WeiserCoder schrieb:
nixraff schrieb:
Wie willst du denn ein Plugin benutzen wenn du nicht sein Interface kennst? Dann kannst du doch gar keine Funktionen davon aufrufen. Ich raff das nicht.
doch, interface kenne ich ja dann schon, weil es includet wird, nur das problem ist dabei, pluginmanager hat keine funktion v****** deklariert genau auf diesen pointertyp zuzugreifen, falls es ein neuer plugin ist, mit neuem interface, da der pluginmanager in einer dll liegt und nicht mehr zu ändern wäre
Genau das versteht ja nixraff nicht, und ich übrigens auch nicht.
Darf man mal fragen, was der Plugin-Manager macht? Und speziell was du dir vorstellst was der Plugin-Manager mit unbekannten Plugins machen soll?
-
Wenn du nicht nen einheitliches Interface schaffst, dann bleibt dir nur Esskar's Vorschlag übrig und ich finde den für nen Plug-In System mehr schlecht als recht.
btw. hi esskar
-
SirLant schrieb:
btw. hi esskar
OT:
hi. so sieht man sich wieder.
da es auf perl-community ja zum ausfall kam, musste ich nun wieder hier meinen alten account ausgraben um mein Bedürfnis Hilfe zu geben, befriedigen zu können.
-
oki jungs, danke schön,
habe jetzt alle plugins von einer leeren abstrakten klasse IPlugin abgeleitet, jetzt gehts, so habe ich eine einheitliche interface für alle
-
WeiserCoder schrieb:
oki jungs, danke schön,
habe jetzt alle plugins von einer leeren abstrakten klasse IPlugin abgeleitet, jetzt gehts, so habe ich eine einheitliche interface für alle
und genau so soll es sein