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,所以它們沒有轉換。