PTHREAD_MUTEX_INITIALIZER inside C++ member function cannot compile?

前端 未结 4 1816
遇见更好的自我
遇见更好的自我 2020-12-17 02:00
class A {
    public:
        A();
    private:
        pthread_mutex_t mu;
};

A::A()
{
    mu = PTHREAD_MUTEX_INITIALIZER;  //cannot compile
}

Ca

4条回答
  •  隐瞒了意图╮
    2020-12-17 02:01

    Instead of this:

    A::A()
    {
        mu = PTHREAD_MUTEX_INITIALIZER;  //cannot compile
    }
    

    Try this:

    A::A()
    {
    pthread_mutex_init( &(mu), NULL);
    }
    

    The PTHREAD_MUTEX_INITIALIZER is a macro,a C struct initializer for something like {0,0,0,0,0{0}} and can only be used at the point of definition.

提交回复
热议问题