我想知道为什么 shared_ptr 的 bool 转换运算符在if-statement工作正常,但在隐式转换为 (bool) 返回值时却没有。

std::shared_ptr<const OfflineContainer> m_pContainer;   

bool MyClass::IsInitialized() const
{
    if (m_pContainer) // compi;es
        return true;

    return m_pContainer; // won't compile
}

编译器消息: Error C2440 'return': cannot convert from 'const std::shared_ptr<const MyClass>' to 'bool'

  ask by Ben translate from so

本文未有回复,本站智能推荐:

3回复

从int到shared_ptr的隐式转换

请考虑以下代码: 在main()的第一行中,整数0被转换为std::shared_ptr<int> ,并且调用f(0)成功而没有任何问题。 但是,使用模板调用函数会使事情变得不同。 第二行将不再编译,错误是 我的问题是: 为什么第一次通话成功而第二次通话没有? 这
1回复

通过引用传递时std::shared_ptr如何在类层次结构之间转换?

综观20.8.2.2类模板的shared_ptr [util.smartptr.shared]我意识到std::shared_ptr具有模板拷贝构造和赋值操作符,其允许从转换shared_ptr<Derived>到shared_ptr<Base>当且仅当Derived*是
1回复

shared_ptr的到constshared_ptr&

我对shared_ptr感到困惑,我的主要问题是: 当我执行以下操作时,c ++是否创建了一个新对象(shared_ptr对象)? 显然, Func1(v1)由ref传递。 但是, Func2(v1)怎么样? 编译器会执行以下操作吗? 我关心它,因为Func2可能比Func1花费更
2回复

在C++11中将`nullptr`作为`std::shared_ptr`返回是否安全?

以以下代码片段为例: 我想过return nullptr; 上面的语句符合 C++ 11 标准,因为nullptr将用于在返回调用者时构造null std::shared_ptr ,如cppreference shared_ptr 所述: 然而,我的一位同事一直坚持他应该去return shared
3回复

矢量的隐式转换>向量>

根据此页面,您可以隐式地将shared_ptr<Foo>转换为shared_ptr<const Foo> 。 这很有道理。 但是,当我尝试将包含shared_ptr<Foo>的std::vector转换为包含shared_ptr<const Foo
1回复

在CRTP中对shared_ptr的隐式向下转换

我建立了一个与CRTP一起用于静态多态的类接口,以及一个与该接口具有shared_ptr的Client类。 我想从客户端将shared_ptr返回到实现,我可以(安全地?)通过客户端内的static_pointer_cast进行此操作。 有没有一种方法可以允许从shared_ptr隐式向下转
3回复

隐式将std::shared_ptr转换为类型

假设我有一个A类,它指定转换为int 所以我可以像这样使用它: 但是,如果我想使用该类的共享指针,该怎么办: 就像类型A的变量被隐式转换为int一样,我想用智能指针做同样的事情。 我怎样才能做到这一点? UPDATE 对不起,也许我问错了。 真正的交易有点复杂。 我使用
1回复

为什么在函数中返回shared_ptr时不将其隐式转换为布尔值?

以下不会编译: 并失败: 标准(我认为)不允许在这里进行隐式转换的原因是什么?