我在以下方法中使用 MessageQueue 类中的 boost mutex 作为私有成员
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);
};
据我在谷歌here中搜索此错误,该问题的解决方案表示为
为互斥锁或包含互斥锁的类放置(智能)指针
但这是否意味着我只能通过传递指针在整个项目中使用一个互斥变量?为什么 boost 正在保护互斥锁
错误是
错误 7 错误 C2248:“boost::mutex::mutex”:无法访问在类“boost::mutex”中声明的私有成员