class A { public: A(); private: pthread_mutex_t mu; }; A::A() { mu = PTHREAD_MUTEX_INITIALIZER; //cannot compile }
Ca
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.