※ ChatGPTを利用し、要約された質問です(原文:メンバ関数にconstをつけた際の問題)
メンバ関数にconstをつけた際の問題
このQ&Aのポイント
C++を勉強中の学生がメンバ関数にconstをつけた際に起きる問題について質問します。
コード中のconstが動作しなくなる理由について知りたいです。
関数内で配列の先頭要素の値を受け取りたいのですが、constをつけるとエラーが発生します。なぜでしょうか?
C++を勉強中の学生です。
以下のようなコードで問題が起こりました。
class TEST{
private:
int mArray[10];
//(int a;)
public:
int* get_mArray(void) const;
//(int get_a(void) const;)
};
int* TEST::get_mArray(void) const{
return mArray; //配列の先頭要素の値を受け取りたい。
}
//(関係のありそうな部分のみを抜き出しました)
このコードにおいて、関数は値を変えない事が明白なので、constをつける必要性はないのですが(癖でつけた際に発生した問題です)、
なぜconstをつけると動作しなくなるのか知りたいです。
//()で囲った部分を有効にし、
int TEST::get_a(void) const{return a;}という関数はエラーにならなかったのですが、どのような違いがあるのでしょうか?
出たエラーは(visual C++ 2010)
'const int [10]' から 'int *' に変換できません。
というものでした。
ポインタとconst関連の部分を手持ちの本で勉強しなおしたのですが、解答を得られなかったのでこちらで質問させてもらいます。
お礼
解答ありがとうございました。 わからなかった部分がよくわかりました。 適切な問題、本当に感謝します!