如何通过对象引用传递函数的参数(C ++)

时间:2015-08-20 09:14:15

标签: c++ object boost reference

我想通过对象引用传递函数的参数。如果我写这样的代码:

#include <boost\thread\thread.hpp>
class Data 
{
public:
    Data();
    ~Data();
    void func(boost::mutex  &mut);
private:

    boost::condition_variable   condData;
    boost::mutex                mutData;
};


void Data::func(boost::mutex  &mut)
{
    Data* data = this;
    data->mutData = mut;// Here a syntax error
}

此处data->mutData = mut;显示错误

Error: "boost::mutex &boost::mutex:.Operator=(boost::mutex &)" can not be accessed等号。

如何解决这个问题?

2 个答案:

答案 0 :(得分:3)

按照设计,无法复制或分配互斥锁。

允许这会使使用互斥锁来保护某些资源的想法无效。如果每个人都拥有自己的互斥锁副本,则共享资源不再存在单一锁定。

答案 1 :(得分:0)

boost::mutex继承自boost::noncopyable,无法复制或分配。 (您发布的错误消息表明赋值运算符是私有的。因此您不能使用它。)如果要共享boost::mutex对象,则必须使用指针或全局变量。