1. 程式人生 > >不能將this指標從“const type" 轉換為"type &"

不能將this指標從“const type" 轉換為"type &"

當在類中宣告並定義了一個普通的公共成員函式,在主函式裡定義了一個此類的常物件,如果試圖使常物件呼叫非”常成員函式“就會產生如標題所說的:

 error: 不能講this指標從"const classtype" 轉換為 "classtype &"。

解決方案是將成員函式定義為常成員函式(常成員函式保證呼叫此函式的物件不會被改變):

class MyClass
{
public:
        void foo(void) const;
// else
};
在之後的函式定義中也要加上const關鍵字
void MyClass::foo(void) const
{
        // do something
}

如果函式體內會對物件作出改變,也就不應該使用常物件來呼叫。

最後又一個疑問:為什麼error提示不能轉換為"classtype &"而不只是"classtype"呢?