我有一個備份數據的副本,我想保護所以我做它const
。我需要違反該const
內斯兩個occassions,一旦處女數據存儲到它:你怎麼拋棄const'ness時,該功能將對象(和訪問非const方法)的參考?
fgBlocks.CopyInto((BlkArray&)backUpCopy);
w.r.t.
result CopyInto(BlkArray &replica) const {/**/}
並再次當我在其上調用RemoveAll()
這是一個非const方法:
((BlkArray)backUpCopy).RemoveAll(true);
是對第一鑄造(如上所示,(BlkArray&)
)正確的嗎?這是我之前沒有投入的間接方面之一。然後再次我將添加另一個未使用的方面中,鑄造遠const
岬用於調用對象的方法,其中所述編譯器不接受如上所示的。
成員被聲明如下:
BlkArray fgBlocks;
const BlkArray backUpCopy;
我試圖延長科雷亞的解決方案,因此有:
BlkArray *pBUCopy = (BlkArray *)&backUpCopy;
fgBlocks.CopyInto(*pBUCopy);
唯一的問題是現在的編譯器未能由於
未初始化構件 'MyClass的:: backUpCopy' 與 'const的' 類型 '常量BlockArray'
最好使用'const_cast',而不是C風格的轉換。對讀者而言,這比讀者更爲明顯。 – Wyzard 2012-02-28 00:53:56