C++ 如何修复:错误:从';常量MyClass*';至';MyClass*';
我收到以下编译错误:C++ 如何修复:错误:从';常量MyClass*';至';MyClass*';,c++,casting,shared-ptr,C++,Casting,Shared Ptr,我收到以下编译错误: 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 std::tr1::shared\ptr myCla
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
std::tr1::shared\ptr myClassA;
常量MyClass*myClassB;
myClassA=std::tr1::shared_ptr(myClassB);//这里出错
我想我理解错误,只是不知道如何修复。我需要myClassB是常量,因此如何将classB转换/复制为共享\u ptr?您需要指向常量对象的共享指针:
std::tr1::shared_ptr<const MyClass> myClassA;
^^^^^
std::tr1::shared\ptr myClassA;
^^^^^
不能从常量MyClass转到MyClass
myClassA = std::tr1::shared_ptr< **const** MyClass>(myClassB);
myClassA=std::tr1::shared_ptr<**const**MyClass>(myClassB);
在一种语言中,*
的意思是用它来强调是不方便的。例如,你可以用Clang的方式通过在^~~~~
下面加下划线来表示位。@Matthieu M我知道,我希望那个部分是粗体的,但当它在代码中时,你不能粗体。所以我没有把它写进代码,但我的编辑决定把它写进代码。