PTHREAD_MUTEX_INITIALIZER inside C++ member function cannot compile?

c++, pthreads

Solution

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.

Problem

``` class A { public: A(); private: pthread_mutex_t mu; }; A::A() { mu = PTHREAD_MUTEX_INITIALIZER; //cannot compile } ``` Can't I initialize `pthread_mutex_t` inside a class member function?

Original source