1

我需要访问由另一个进程创建的共享内存段。在 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.
}

谢谢你。

4

1 回答 1

2

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

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

对于这样的情况,它非常方便。如果需要初始化多个成员,只需用逗号分隔即可。

于 2013-06-24T09:27:45.090 回答