PTHREAD_MUTEX_INITIALIZER里面的C++成员函数无法编译?

Alc*_*ott 6 c++ pthreads

class A {
    public:
        A();
    private:
        pthread_mutex_t mu;
};

A::A()
{
    mu = PTHREAD_MUTEX_INITIALIZER;  //cannot compile
}
Run Code Online (Sandbox Code Playgroud)

我不能pthread_mutex_t在类成员函数内初始化吗?

ask*_*ish 11

而不是这个:

A::A()
{
    mu = PTHREAD_MUTEX_INITIALIZER;  //cannot compile
}
Run Code Online (Sandbox Code Playgroud)

试试这个:

A::A()
{
pthread_mutex_init( &(mu), NULL);
}
Run Code Online (Sandbox Code Playgroud)

PTHREAD_MUTEX_INITIALIZER是一个宏,一个C struct初始值设定项,用于{0,0,0,0,0 {0}}之类的东西,只能在定义点使用.


Die*_*lla 8

pthread_mutex_init在这种情况下使用,因为常量用于编译时初始化.