gpt4 book ai didi

c++ - GCC 错误 : cannot convert 'const shared_ptr<...>' to 'bool' in return

转载 作者:IT老高 更新时间:2023-10-28 12:56:21 24 4
gpt4 key购买 nike

我正在切换到 GCC 4.6.1,它开始提示在 GCC 4.4 和 MSVC10 上运行良好的代码。从这样的函数返回时,它似乎不想在 shared_ptrbool 之间进行转换:

class Class { shared_ptr<Somewhere> pointer_; };

bool Class::Function () const
{
return pointer_;
}

使用

return static_cast<bool> (pointer_);

一切正常。到底他妈发生了什么?这是 --std=cpp0x.

最佳答案

在 C++11 中,shared_ptr 有一个 explicit operator bool 这意味着 shared_ptr 可以' t 被隐式转换为 bool.

这是为了防止 shared_ptr 可能会在算术表达式和类似情况中意外转换的一些潜在陷阱。

添加显式转换是对代码的有效修复。

你也可以这样做 return pointer_.get() != 0;, return pointer_.get(); 甚至 return pointer_ != nullptr; .

关于c++ - GCC 错误 : cannot convert 'const shared_ptr<...>' to 'bool' in return,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7580009/

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