2012-08-31 66 views
0

我創建了一個名稱和大小爲managed_shared_memory的對象。之後,我想再次獲得這個名字。我該怎麼做呢?我期望有一個像get_name或類似的功能,但我找不到一個。如何獲得boost :: interprocess :: managed_shared_memory的名稱

#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; 
} 
+0

它只是一個字符串 - 沒什麼特別的;所以你可以保持它像任何其他。如果您確定要使用get_name方法,儘管您可以從managed_shared_memory派生實現該功能的類。 –

回答

2

我劃分了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) { 
} 
相關問題