如何初始化"Boost interprocess managed windows shared memory"成员变量?



我需要访问另一个进程创建的共享内存段。在Boost文档中,我找不到如何初始化成员变量。正如所有的例子都在int main()中解释的那样,没有显示成员变量的使用。我正在使用一个托管的windows共享内存&我需要它是一个在构造函数中初始化的成员变量。下面我展示了它作为一个局部变量是如何实现的

boost::interprocess::managed_windows_shared_memory shm(boost::interprocess::open_only, "ShrdMemKey");

但是,如果我将其声明为成员变量,我如何在c'tor中初始化它呢。

class ShrdMem
{
private:
  boost::interprocess::managed_windows_shared_memory shm; 
public:
  ShrdMem();
};
ShrdMem::ShrdMem()
{
  // Need shm to be initialized in c'tor.
}

谢谢。

C++具有为成员变量提供构造函数参数的语法。

ShrdMem::ShrdMem()
  : shm(boost::interprocess::open_only, "ShrdMemKey")
{
  // Here, shm is initialised according to the parameters passed above
}

它在这种情况下非常方便。如果需要初始化多个成员,只需用逗号将它们隔开即可。

最新更新