「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーについてです

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
sadora3
記事: 175
登録日時: 7年前

「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーについてです

#1

投稿記事 by sadora3 » 2年前

「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーについての質問です。
コンパイラは、VisualStudio2010で、C++で、DirectXを用いてゲームを作っていたときに起こりました。

↓このサイトに解決法は乗っておりました。
http://d.hatena.ne.jp/pogin/20120113/1326480333

こちらのサイトのように、ゲッターの)と{の間にconstを書くことで、解決はしたのですが、この書き方に納得できません。それになんだか気持ち悪いです。
どうして、)と{の間にconstを付けなければならないのでしょうか?
「オブジェクトにメンバ関数と互換性のない型修飾子があります」というのは、どういう意味なのでしょうか?

それと最も答えて頂きたい質問で、皆さんは、こんな書き方しますか?
もししていないなら、const消そうと思います。

derok
記事: 51
登録日時: 6年前

Re: 「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーについてです

#2

投稿記事 by derok » 2年前

コード:

const Coordinate& argCoordinate
ここでargCoordinateはconstが付いてます。つまり、argCoordinateの中身を変更できないということです。(やや御幣がありますが。)
で、そこから関数を呼んだ際、その関数が中身を変更していたら困りますので、

コード:

double GetX() const { return mX; }
とconstを入れてこの関数では値を変更しないことを明示しています。
sadora3 さんが書きました:皆さんは、こんな書き方しますか?
普通にしますね。特に気持ち悪いとも感じませんし。「
constについてはここに詳しくあるので参照してください。
http://marupeke296.com/CPP_Const.html
http://marupeke296.com/CPP_Const2.html

sadora3
記事: 175
登録日時: 7年前

Re: 「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーについてです

#3

投稿記事 by sadora3 » 2年前

constメンバ関数というのですね。
URL先のページは大変参考になりました。
知らないことも結構ありました・・・。
回答ありがとうございました。

sadora3
記事: 175
登録日時: 7年前

Re: 「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーについてです

#4

投稿記事 by sadora3 » 2年前

もう解決をつけてしまった後で申し訳ありませんが、もう一つ質問をさせてください。

ゲッター関数は、問題がなければ全てのゲッター関数を例外なくconstメンバ関数にした方がいいと思いますか?
それとも、「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーが出た場合に、仕方なくconstメンバ関数に変更するといった方法がいいのでしょうか?

個人的には前者だと思うのですが、どうでしょうか?

derok
記事: 51
登録日時: 6年前

Re: 「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーについてです

#5

投稿記事 by derok » 2年前

sadora3 さんが書きました:もう解決をつけてしまった後で申し訳ありませんが、もう一つ質問をさせてください。

ゲッター関数は、問題がなければ全てのゲッター関数を例外なくconstメンバ関数にした方がいいと思いますか?
それとも、「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーが出た場合に、仕方なくconstメンバ関数に変更するといった方法がいいのでしょうか?

個人的には前者だと思うのですが、どうでしょうか?
自分も前者にした方がいいと思います。ゲッター関数は通常メンバーを変更しないと考えられるので、constにして影響がでるとは思えません。

sadora3
記事: 175
登録日時: 7年前

Re: 「オブジェクトにメンバ関数と互換性のない型修飾子があります」というエラーについてです

#6

投稿記事 by sadora3 » 2年前

大変勉強になりました。
回答ありがとうございました。

閉鎖

“C言語何でも質問掲示板” へ戻る