は私の問題は、の次のサンプルを見てみましょう証明するために動作しません。既存の点と引数点の間の距離を返します。C++クラスの関数は別の関数内で意図したとおり
問題は次のとおりです。main()では、この関数は機能します(エラーは発生しません)。しかし、WriteDistance()関数には、the object has type qualifiers that are not compatible with the member function "MyClass::distance"
と'long double MyClass::distance(const MyClass &)': cannot convert 'this' pointer from 'const MyClass' to 'MyClass &'
というエラーがあります。
距離関数をオーバーロードすると(1つのMyClassオブジェクトだけでなく、おそらく2つの長い2倍も使用できます)、エラーはno instance of overloaded function "MyClass::distance" matches the argument list and object (the object has type qualifiers that prevent a match)
と'MyClass::distance': 2 overloads have no legal conversion for 'this' pointer
となります。
質問は、なぜこのエラーが発生し、それを防止するのですか?私は、MyClass &a
const
を削除していないので( "const
"を削除すると)、エラーが取り除かれます。しかし、なぜ?このサイトのメンバーは、オブジェクトのコピーを防ぐために常にconst
の参照を渡すために無数の時間を教えてくれました。もし私がconst
参照を渡すことができない場合、それは私の関数WriteDistance
が何らかの方法でオブジェクトを変更することを意味しますか?それを実際に持っていることにいくつかの回避策がありますかconst
?
これは私が探していた答えです。私は、欲求が私が望んでいたものを理解しました。ありがとうございました! – user16320