我在功能工作,我不能改變(除了我正在寫),代碼庫,在這裏有一些類型:使一個不可變型可變(consts和升壓)
// Pointer to a mutable thingy
typedef boost::shared_ptr<Thingy> MPtr;
// Pointer to an immutable thingy
typedef boost::shared_ptr<const Thingy> Ptr;
現在,我有一個MPtr類型的對象,我需要將其分配給Ptr類型的對象,但是我不能(編譯器告訴我沒有可能的轉換)。使用const_cast似乎也沒有幫助:
MPtr foo = const_cast<MPtr*>(moo);
我收到一個錯誤,說它無法更改基礎類型。關於如何解決此問題的任何想法?
你是否樂意得到這種哈克?如果你採用moo的地址,然後使用C風格的演員陣容,並取消你應該是好的。 MPtr foo =(Mptr)&moo; – RandyGaul 2013-04-23 00:27:21
'Thingy'是一個'typedef'還是'#define'? Thingy在兩個地方都是同一個字符串嗎? – Yakk 2013-04-23 02:00:21