J'ai un type prédéfini qui hérite de boost :: noncopyable (donc je dois stocker le pointeur sur ces objets). J'utilise un boost :: ptr_map. Comme je le sais, le deuxième argument est déjà un pointeur. Ainsi, le code:ptr_map insertion
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);
L'erreur est:
error: no matching function for call to ‘boost::ptr_map<std::basic_string<char>, boost::any>::insert(const char [11], boost::any*&)’
UPD: Quand je ne passe pas le pointeur sur l'une any temp = any(new KeyEvent());
Je reçois :
error: no matching function for call to ‘boost::ptr_map<std::basic_string<char>, boost::any>::insert(const char [11], boost::any&)’
Pourquoi ne pas 'SomeMap [ » SomeKey "] = temp;'? – Cubbi
@Cubbi: cela va compiler, mais ce ne sera pas une exception en toute sécurité. 'temp' va fuir si le constructeur de la chaîne ou l'insertion de l'élément vide se lève. –
@Mike Seymour: Vous avez raison. C'est ce que j'obtiens pour n'utiliser que des pointeurs intelligents pendant plusieurs années. – Cubbi