я использую мьютекс повышения в классе MessageQueue в качестве частного члена в следующем методе
void MessageQueue::Dequeuee()
{
Request rq(messageWareHouse.front().reqID,messageWareHouse.front().seq,
messageWareHouse.front().sMessage);
while(true)
{
boost::unique_lock<boost::mutex> lock(qMutex);
qCond.wait(lock);
**reqCollection**.find(messageWareHouse.front().reqID)->second.addSegments(messageWareHouse.front().seq,
messageWareHouse.front().sMessage );
}
....
reqCollection — это карта
map<size_t, Request> reqCollection;
Внутренний запрос, когда я пытаюсь инициализировать мьютекс, я получаю следующую ошибку
class Request
{
private:
size_t RequestID;
public:
boost::mutex qMutex;
Request(size_t requestID,size_t seq, std::string sMessage);
void addSegments(size_t seq, std::string sMessage);
};
насколько я искал эту ошибку в Google здесь решение для проблема заявлена как
Поместите (умные) указатели на мьютекс или класс, содержащий мьютекс
но означает ли это, что я могу использовать только одну переменную мьютекса во всем моем проекте, передавая указатели? Почему boost защищает мьютекс
ошибка
Ошибка 7 ошибка C2248: 'boost::mutex::mutex': невозможно получить доступ к частному члену, объявленному в классе 'boost::mutex'