タイプが非静的メンバーの小さなテンプレートクラスがありboost::shared_mutex
ます。コンパイルしようとすると、エラーが発生します。
'boost::shared_mutex::shared_mutex' : cannot access private member declared in class 'boost::shared_mutex'
。
boost::shared_mutex
実際にはプライベートのネストされたクラスshared_mutex
がありますが、なぜこの問題が発生したのかわかりません。
これが私のクラスです:
#include <boost/thread.hpp>
#include <boost/thread/shared_mutex.hpp>
#include <queue>
template <typename T>
class CThreadSafeQueue
{
public:
CThreadSafeQueue();
private:
boost::mutex _sharedMutex;
std::queue<T> _queue;
};
template <typename T>
CThreadSafeQueue<T>::CThreadSafeQueue()
{
}
同じことが通常の`boost::mutex'でも起こります。
別の非テンプレートクラスがあり、どちらのミューテックスタイプでも問題はありません。