在类中使用静态互斥

我有一个class,我可以有很多的实例。 它内部创build并初始化一些来自第三方库(使用一些全局variables)的成员,并且不是线程安全的。

我想过使用静态boost :: mutex,这将被locking在我的类的构造函数和析构函数。 因此,在我的线程中创build和销毁实例对于第三方成员来说是安全的。

class MyClass { static boost::mutex mx; // 3rd party library members public: MyClass(); ~MyClass(); }; MyClass::MyClass() { boost::mutex::scoped_lock scoped_lock(mx); // create and init 3rd party library stuff } MyClass::~MyClass() { boost::mutex::scoped_lock scoped_lock(mx); // destroy 3rd party library stuff } 

我无法链接,因为我收到错误:

 undefined reference to `MyClass::mx` 
  1. 我是否需要这种静态成员的特殊初始化?

  2. 使用静态互斥锁有什么错误吗?

编辑:链接问题是正确的定义在CPP

 boost::mutex MyClass::mx; 

Solutions Collecting From Web of "在类中使用静态互斥"