我在使用deque和boost :: mutex時遇到了一些麻煩,我做了一個簡單的例子,它將用下面的錯誤進行編譯。與std :: deque一起使用時,不能將Boost :: mutex作爲私有類成員?
問題是我想擁有一個具有一個或多個互斥體作爲私有成員的類。雖然目前的例子給出了一個錯誤:
錯誤C2248:「提高::互斥::互斥體」:不能訪問類「的boost ::互斥體」
聲明爲private成員,我已經看到了一些相關的職位,但這樣遠遠沒有設法解決這個具體問題。
任何幫助將不勝感激......
#include <iostream>
#include <boost/thread.hpp>
#include <deque>
using namespace std;
class object {
public:
void process(void)
{
m_mutex.lock();
// do something
a = a*10;
m_mutex.unlock();
}
object(int v){ a = v; }
private:
int a;
boost::mutex m_mutex;
};
int main(int argc, char* argv[])
{
deque<object> obj;
obj.push_back(object(1));
obj.push_back(object(2));
obj.push_back(object(3));
obj.at(0).process();
obj.at(1).process();
obj.at(2).process();
return 0;
};
你應該使用作用域鎖定類型而不是手動調用鎖定/解鎖 –