1

managed_shared_memory名前とサイズのオブジェクトを作成しました。その後、再度名前を取得したいと思います。どうすればいいですか?みたいな機能があると思っていたのget_nameですが、見つけられませんでした。

#include <boost/interprocess/managed_shared_memory.hpp>

int main()
{
   using namespace boost::interprocess;
   managed_shared_memory shm(open_or_create,"MySharedMemory", 65536);

   // The problem how the get the name out of the 
   std::string name = shm.get_name(); // does not exist
   std::string name = shm.get_device().get_name(); // is not accessible

   return 0;
}
4

2 に答える 2

3

managed_shared_memory をサブクラス化し、その名前をメンバー変数に保持しました。

class my_shared_memory : public managed_shared_memory {
private:
    const char* name;
public:
    my_shared_memory(open_or_create_t t, const char *name, size_type size);
    const char* get_name() { return name; }
};

my_shared_memory::my_shared_memory(open_or_create_t t, const char* name, size_type size) 
    : managed_shared_memory(t, name, size)
    , name(name) {
}
于 2013-06-18T13:39:10.820 に答える