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

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

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

最佳答案

代替这个:

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

尝试这个:
A::A()
{
pthread_mutex_init( &(mu), NULL);
}

PTHREAD_MUTEX_INITIALIZER是一个宏,是{0,0,0,0,0,0 {0}}之类的C结构初始化程序,只能在定义时使用。

10-07 17:56