c – 为什么boost :: interprocess :: managed_shared_ptr为非co
发布时间:2020-12-16 07:01:40 所属栏目:百科 来源:网络整理
导读:据我所知,以下内容对boost :: shared_ptr有效: boost::shared_ptrSomeData ptr;...boost::shared_ptrconst SomeData c_ptr = ptr; // Valid 对于boost :: interprocess :: managed_shared_ptr,相同的行为不适用.为什么? 解决方法 boost :: interprocess ::
据我所知,以下内容对boost :: shared_ptr有效:
boost::shared_ptr<SomeData> ptr; ... boost::shared_ptr<const SomeData> c_ptr = ptr; // Valid 对于boost :: interprocess :: managed_shared_ptr,相同的行为不适用.为什么? 解决方法
boost :: interprocess :: managed_shared_ptr实际上不是共享指针;它只是一个帮助类,您可以使用它来定义一个类型.从
interprocess docs:
使用上面示例中的“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除了make 3 typedef之外什么都不做,所以它们不会转换. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |