Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在c+中使用“从”启用“共享”时,检查现有的共享\u ptr+;?_C++_Boost_Shared Ptr_Reference Counting - Fatal编程技术网

C++ 在c+中使用“从”启用“共享”时,检查现有的共享\u ptr+;?

C++ 在c+中使用“从”启用“共享”时,检查现有的共享\u ptr+;?,c++,boost,shared-ptr,reference-counting,C++,Boost,Shared Ptr,Reference Counting,除了捕获当试图从作为原始指针的指针上的_this()调用shared_时抛出的坏_弱_ptr错误外,还有什么方法可以测试对象是否被引用计数 我有一些处理原始指针和共享指针的函数,我想确保在使用错误的指针时错误是明显的?我当然可以捕捉到错误,但我只是想知道是否有一种简单的方法来测试这种特殊情况?从\u this::shared\u from\u this()调用std::enable\u shared\u决不会对现有的有效对象或指向它的指针失败。编辑:。。。如果至少有一个std::shared\u

除了捕获当试图从作为原始指针的指针上的_this()调用shared_时抛出的坏_弱_ptr错误外,还有什么方法可以测试对象是否被引用计数


我有一些处理原始指针和共享指针的函数,我想确保在使用错误的指针时错误是明显的?我当然可以捕捉到错误,但我只是想知道是否有一种简单的方法来测试这种特殊情况?

从\u this::shared\u from\u this()调用
std::enable\u shared\u决不会对现有的有效对象或指向它的指针失败。编辑:。。。如果至少有一个
std::shared\u ptr
实例,其中
YourClass
std::enable\u shared\u from\u this
。这是一个比第一个更严格的声明,如果被误解,我道歉


通过只创建类的
shared\u ptr
实例,您可以确保
shared\u from\u this()
的有效性。除了捕获异常之外,无法检查
YourClass
实例是否由
shared\u ptr
管理。

调用
std::enable\u shared\u from\u this()
对于现有的有效对象或指向它的指针,永远不会失败。编辑:。。。如果至少有一个
std::shared\u ptr
实例,其中
YourClass
std::enable\u shared\u from\u this
。这是一个比第一个更严格的声明,如果被误解,我道歉


通过只创建类的
shared\u ptr
实例,您可以确保
shared\u from\u this()
的有效性。除了捕获异常之外,无法检查
YourClass
实例是否由
共享\u ptr
管理。

不要混合原始指针和托管指针。

不要混合原始指针和托管指针。

听起来像是糟糕的设计。也许可以考虑发布你的代码。在YACC/BISY中的%Union只允许POD类型,所以我必须使用指针(这个QS谈论这个:),但是我希望使用AST所形成的“模型”的智能指针,因此我必须混合它们。听起来像是坏设计。也许可以考虑发布你的代码。在YACC/BISY中的%Union只允许POD类型,所以我必须使用指针(这个QS谈论这个:),但是我希望使用AST所形成的“模型”的智能指针,因此我必须混合它们。我别无选择,见上面的评论。我没有选择,见上面的评论。