У меня проблемы с deque и boost :: mutex, я сделал простой пример, который будет компилироваться с ошибкой ниже.Не может быть Boost :: mutex в качестве частного члена класса при использовании с std :: deque?
Проблема в том, что я хочу иметь deque некоторого класса, который имеет один или несколько мьютексов как частный член. Хотя в настоящее время пример дает ошибку:
ошибка C2248: «повышение :: мьютекс :: семафор»: не может получить доступ к закрытому члену, объявленный в классе "подталкивание :: мьютекс
Я видел некоторые соответствующие должности, но так далеко мне не удалось решить эту конкретную проблему.
Любая помощь будет принята с благодарностью ...
#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;
};
Вы должны использовать тип блокировки с привязкой вместо вызова блокировки/разблокировки вручную –