gpt4 book ai didi

C++ 自动检测 shared_ptr 与 NULL 比较的位置

转载 作者:太空狗 更新时间:2023-10-29 23:05:42 25 4
gpt4 key购买 nike

我们有一个大型遗留代码库,其中包含通常引用的指针类型,出于各种原因,它们更适合作为 shared_ptrs。

shared_ptrs 是常规指针的很好的替代品,除了 NULL 检查。在整个代码中,我们对这些指针进行定期 NULL 检查,并且在转换为 shared_ptrs 之后,这些空检查将始终通过。

有没有人有自动检测这些情况的好方法:if (foo == NULL)//当 foo 是一个 boost::shared_ptr?

我们还没有使用 C++11,但很快就会。

例子:

// declared elsewhere as :   boost::shared_ptr<T> foo;
if (NULL != foo) //always true when shared_ptr. Correct check when raw pointer
{
foo->DoSomething();
}

最佳答案

您可以将所有指针转换为您的类,该类将封装 shared_ptr,并重载它的“operator==”函数以检测 NULL 比较并对它们进行计数,或正确处理它们。您可以坚持使用这个代理类,或者在计数之后(例如转储到日志文件)所有比较决定是否切换到 shared_ptr。

关于C++ 自动检测 shared_ptr 与 NULL 比较的位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18215208/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com