2010-10-07 6 views
0

Pourquoi ne puis-je pas faire cela?Liste des objets boost :: Unique_Ptr

typedef boost::interprocess::unique_ptr<QueueList, QueueListDeletor> UQList; 
typedef boost::intrusive::list<UQList> List; // Compiler (VS 2003) complains 

Le QueueList est une classe qui dérive de public boost::intrusive::list_base_hook<> pour faire partie d'une liste chaînée intrusive.

Je veux utiliser unique_ptr pour pouvoir faire circuler cet objet entre les threads et seulement 1 seul thread a la propriété de cet objet à la fois.

EDIT: ERREURS:

erreur C2039: 'pointeur': n'est pas un membre de 'boost :: intrusive :: :: détails default_list_hook' voir la déclaration de « boost :: intrusive :: détail: : default_list_hook ' voir la référence à l'instanciation du modèle de classe' boost :: intrusive :: list_impl 'en cours de compilation avec [ Config = boost :: intrusive :: listopt :: valeur_traits, boost :: intrusive :: taille_type :: pack> :: type, boost :: intrusive :: constant_time_size> :: type> :: taille_type, vrai> ]

erreur C2039: 'const_pointer': n'est pas membre de 'boost :: intrusive :: :: détails default_list_hook' voir la déclaration de 'boost :: intrusive :: :: détails default_list_hook'

Répondre

2

QueueList peut être dérivé de list_base_hook, mais UQList ne l'est certainement pas. Puisque vous essayez de créer une liste intrusive de UQList (qui est un unique_ptr) et non une liste intrusive d'objets QueueList, cela ne fonctionnera pas.

Questions connexes