【问题标题】:How to fix: error: invalid conversion from 'const MyClass*' to 'MyClass*'如何修复:错误:从 'const MyClass*' 到 'MyClass*' 的无效转换
【发布时间】:2012-07-14 14:58:27
【问题描述】:

我得到这个编译错误:

error: invalid conversion from 'const MyClass*' to 'MyClass*'

代码如下:

std::tr1::shared_ptr<MyClass> myClassA;
const MyClass* myClassB;
myClassA = std::tr1::shared_ptr<MyClass>(myClassB); // error here

我想我理解错误,只是不知道如何解决。我需要 myClassB 成为 const 那么如何将 classB 转换/复制到 shared_ptr?

【问题讨论】:

    标签: c++ casting shared-ptr


    【解决方案1】:

    你需要一个指向 const 对象的共享指针:

    std::tr1::shared_ptr<const MyClass> myClassA;
                         ^^^^^
    

    【讨论】:

      【解决方案2】:

      您不能从 const MyClass 转到 MyClass。

      myClassA = std::tr1::shared_ptr< **const** MyClass>(myClassB);
      

      【讨论】:

      • * 有含义的语言中,用它来强调是很尴尬的。您可以使用 Clang 的方式来指示位,例如在 ^~~~~ 下划线。
      • @Matthieu M 我知道,我希望那部分是粗体的,但是当它在代码中时你不能加粗。所以我没有把它放在代码中,但我的编辑决定把它放在代码中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2013-04-03
      相关资源
      最近更新 更多