Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/127.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何修复:错误:从';常量MyClass*';至';MyClass*';_C++_Casting_Shared Ptr - Fatal编程技术网

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我知道,我希望那个部分是粗体的,但当它在代码中时,你不能粗体。所以我没有把它写进代码,但我的编辑决定把它写进代码。