我正在阅读有效的C ++,它告诉我''成员函数只有它们的常量不同才可以重载'。
书中的例子是:
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(void)':重载函数的区别仅在于'int * A :: get_message(void)'的返回类型
有什么区别?有没有办法可以修复这个类,所以我有一个const和非const版本的get_message?
答案 0 :(得分:15)
您将const
功能的get_message()
限定符放在了错误的位置:
const int* get_message() const { return val_; }
// ^^^^^
// Here is where it should be