Wie kann ich meine eigenen Klassenobjekte in ptr_map von Boost einfügen. Die Objekte sind Vorlagen, so dass ich keinen statischen Typnamen in der Map verwenden kann. Also habe ich:Boost jede Verwendung
ptr_map<string, any> someMap;
Meine Klasse erbt die boost :: noncopyable.
someMap.insert("Test", new MyClass<SomeTemplate>());
Der Fehler ist: Fehler: no matching function for call to ‘boost::ptr_map
.
UPD: ich lieber etwas Wrapper machen und verwenden Sie nicht die boost :: any. Also:
class IWrapper { };
class MyClass : public IWrapper { };
ptr_map<string, IWrapper> someMap;
someMap.insert("Test", new MyClass<SomeTemplate>());
Warum wird es nicht funktionieren (der gleiche Fehler)? Ich könnte die geerbte Klasse in die Elternschnittstelle übergeben. Was ist los mit dir?
Meine Klassen sind templated. Ich habe das Beispiel aktualisiert. Ich kann keine Basis dafür bilden (ohne Vorlage). – Ockonal
Okay, danke. Der Weg mit jedem sollte funktionieren. Aber könnten Sie sich ein neues Code-Update ansehen? Ich habe versucht deine erste Idee zu verwirklichen. – Ockonal