みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

メンバ関数に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関連の部分を手持ちの本で勉強しなおしたのですが、解答を得られなかったのでこちらで質問させてもらいます。

投稿日時 - 2011-02-01 21:44:43

QNo.6491169

暇なときに回答ください

質問者が選んだベストアンサー

const なメンバ関数と const でないメンバ関数とでは this の型が異なり, そのことがメンバの型の違いにつながります.
そこで問題です:
const int ca[] = { 1, 2, 3, 4, 5 };
int *pa = ca;
というコード片は正しいでしょうか?

投稿日時 - 2011-02-01 23:40:35

お礼

解答ありがとうございました。
わからなかった部分がよくわかりました。
適切な問題、本当に感謝します!

投稿日時 - 2011-02-02 18:53:36

ANo.1

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問