我在閱讀Effective C++,它告訴我'成員函數只能通過它們的常量不同而被重載'。C2556:重載函數只有返回類型不同
書中的例子是:
class TextBlock {
public:
const char& operator[](std::size_t position) const;
char& operator[](std::size_t position);
private:
std::string text;
}
我下面的例子中,使用存儲的指針。
class A {
public:
A(int* val) : val_(val) {}
int* get_message() { return val_; }
const int* get_message() { return val_; } const;
private:
int* val_;
};
我得到:
錯誤C2556: 'const int的* A :: get_message(無效)':重載函數返回類型從「詮釋的不同僅僅* A :: get_message(無效) '
有什麼區別?有什麼辦法可以修復這個類,所以我有一個const和非const的get_message版本?
你混淆的*常量性是函數返回與*本身的功能*常量性*。 –