我用兩個get方法創建了一個類,一個是const,一個是非const。 const方法是公開的,所以用戶可以查詢矢量。非const方法受到保護,所以我可以使用它來修改我需要的數據。爲什麼在const方法爲public並且非const類型被保護時,C++不會強制轉換爲const?
但是,當我嘗試使用該類,並調用get方法時,編譯器會抱怨非const方法受到保護。相反,我必須使用const_cast將對象強制轉換爲const,所以我可以使用公共方法。
有沒有辦法解決這個問題?爲什麼編譯器不會自己創建,因爲有一個公共方法?如果我刪除受保護的版本並保留常量,那麼它可以正常工作,因此它在這種情況下可以執行演員。強制轉換爲const始終是安全的。它消除了常見問題。