2012-07-14 58 views
2

我得到這個編譯錯誤無效轉換:如何解決:錯誤:從 '常量MyClass的*' 到 'MyClass的*'

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?

回答

8

你需要一個共享指針const對象:

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

D'oh!謝謝(你的)信息。 – kanso 2012-07-14 15:05:55

0

你不能從一個const MyClass的MyClass的來走。

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

在'*'有意義的語言中,使用它強調是很尷尬的。例如,您可以使用Clang的方式來指示比特,例如用'^ ~~~~'來加下劃線。 – 2012-07-14 16:08:44

+0

@Matthieu M我知道,我希望那個部分是大膽的,但是當你在代碼中時你不會大膽的。所以我沒有把它放在代碼中,但我的編輯決定把它放在代碼中。 – Caesar 2012-07-14 16:17:55

相關問題