0

テンプレート化されたクラス内で使用する必要があります aboost::interprocess::mutex 関数内で変数を次のように宣言しました

  named_mutex mutex(open_only, m_name.c_str() 
  ,permissions(0666));

コンパイルできない理由がわかりません。以下のエラーが表示されます。コンパイラーが正しいコンストラクターを使用しない (const 参照を持つコンストラクターと一致させようとする) 可能性と、正しいコンストラクターを強制的に使用する方法を教えてください。

    error: no matching function for call to   
    boost::interprocess::named_mutex::named_mutex(const 
    boost::interprocess::open_only_t&,   const char*, boost::interprocess::permissions)’
    /usr/local/include/boost/interprocess/sync/named_mutex.hpp:140: note: 
    candidates are: 
    boost::interprocess::named_mutex::named_mutex(boost::interprocess::open_only_t, const char*)
4

1 に答える 1

1

を受け取るコンストラクターはopen_only_t、パーミッション パラメーターを受け取りません。本当に意味がありません-作成するのではなく、既存のミューテックスを開こうとしています。

アクセス許可を削除すると、適切なオーバーロードが見つかるはずです。

于 2013-03-18T16:14:23.773 に答える