2012-10-11 38 views

回答

1

boost::interprocess::managed_shared_ptr實際上並不是共享指針;它只是一個助手類,您可以用它來定義其類型。從interprocess docs

typedef managed_shared_ptr<MyType, managed_shared_memory>::type my_shared_ptr;

和共享指針的創建可以簡化爲這樣:

[C++]

my_shared_ptr sh_ptr = make_managed_shared_ptr (segment.construct<MyType>("object to share")(), segment);

隨着 「sh_ptr」從上面的例子,以下應該工作:

typedef managed_shared_ptr<const MyType, managed_shared_memory>::type my_shared_const_ptr; 
my_shared_const_ptr sh_c_ptr = sh_ptr; 

由於這兩個對象實際上是共享的指針。

在另一方面,這樣做的:

managed_shared_ptr<MyType, managed_shared_memory> ptr; 
managed_shared_ptr<const MyType, managed_shared_memory> c_ptr = ptr; 

不會因爲在這種情況下,PTR和c_ptr工作是very simple structs什麼也不做,只是做3周的typedef,所以它們沒有轉換。

相關問題