0

なぜ私はこれを行うことができないのですか?

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

public boost::intrusive::list_base_hook<>QueueList は、侵入型リンク リストの一部にするために派生するクラスです 。

unique_ptr を使用して、このオブジェクトをスレッド間で受け渡しできるようにし、その時点でこのオブジェクトの所有権を持つスレッドを 1 つだけにしたいと考えています。

編集: エラー:

error C2039: 'pointer' : 'boost::intrusive::detail::default_list_hook' のメンバーではありません 'boost::intrusive::detail::default_list_hook' の宣言を参照してください クラス テンプレートのインスタンス化への参照 'boost::intrusive ::list_impl' は [ Config=boost::intrusive::listopt::value_traits,boost::intrusive::size_type::pack>::type,boost::intrusive::constant_time_size>::type>:: でコンパイルされています。 size_type,true> ]

エラー C2039: 'const_pointer' : 'boost::intrusive::detail::default_list_hook' のメンバーではありません 'boost::intrusive::detail::default_list_hook' の宣言を参照してください

4

1 に答える 1

2

QueueList は list_base_hook から派生している可能性がありますが、UQList はそうではありません。UQList (unique_ptr である) の侵入型リストを作成しようとしており、QueueList オブジェクトの侵入型リストではないため、これは機能しません。

于 2010-10-07T09:10:00.853 に答える