我正在使用一個庫,它具有與其構造函數不同的init
函數。我每次做一個新的實例我需要調用,例如:從現在開始,我可以創建一個變量_const嗎?
MyClass a;
a.init();
由於init
不const
,這使我從創建const的情況下(我不能寫const MyClass a
)。有什麼辦法可以調用init,然後從「here on out」聲明(我猜想其餘的範圍)我的變量是const
?
這工作,而是依賴於不接觸原始變量:
MyClass dont_touch;
dont_touch.init();
const MyClass & a = dont_touch;
答案是否定的。像你一樣,我希望是的。 – Mehrdad
你也可以使用'const_cast'作爲'init'調用來做到快速和骯髒。也就是說,在'init'調用的對象周圍聲明對象'const'和'const_cast'。然而,'const_cast'通常被認爲是不好的做法,我必須說我認爲[模板解決方案](http://stackoverflow.com/a/23400028/3100771)是超級光滑的。 – Apriori
@Apriori絕對未定義的行爲。不能const_cast從一個已定義的const對象中取出const並且對它做非const的東西。 –