私はEffective C++を読んでいて、「constnessだけが異なるメンバー関数はオーバーロードできる」と言っています。
本の例は次のとおりです。
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)' と異なるだけです
違いはなんですか?クラスを修正して、get_message の const バージョンと非 const バージョンを使用する方法はありますか?