ptr_map einfügen

Habe ich einige vordefinierte Typen, die erbt boost::noncopyable (so habe ich zum speichern der Zeiger auf diese Objekte). Ich benutze eine boost::ptr_map. Ich weiß, wird das zweite argument es ist bereits ein Zeiger. Also, der code:

ptr_map<string, boost::any> SomeMap;
typedef %Some noncopyable class/signature% NewType;

//Inserting now
boost::any *temp = new boost::any(new KeyEvent());
SomeMap.insert("SomeKey", temp);

Der Fehler ist:

error: no matching function for call to ‘boost::ptr_map<std::basic_string<char>, boost::any>::insert(const char [11], boost::any*&)’


UPD: Wenn ich nicht bestehen, die Zeiger auf die jeder any temp = any(new KeyEvent());

Bekomme ich:

error: no matching function for call to ‘boost::ptr_map<std::basic_string<char>, boost::any>::insert(const char [11], boost::any&)’

  • Warum nicht SomeMap["SomeKey"] = temp;?
  • das kompilieren wird, aber es ist nicht exception-sicher. temp wird Auslaufen, wenn Sie entweder den string-Konstruktor oder der leer-element-insertion wirft.
  • Seymour: Du hast Recht. Das ist es, was ich für die Verwendung von nur smart-Pointer für mehrere Jahre.
InformationsquelleAutor Max Frai | 2010-06-18
Schreibe einen Kommentar