私はCStringArray
を持っており、CString::MakeUpper()
に電話して大文字にしたいと思います。CStringArray :: GetAt(int index)はconstを返します。どうして?
私はこのようにそれをしようとしている:
mycstringarray.GetAt(0).MakeUpper();
mycstringarrayは次のように宣言された場所:
CStringArray mycstringarray;
mycstringarray.SetSize(46);
mycstringarray.setAt(0,CString("StayClassySandiego"))
が、Visual Studioは、それがconst CString
から&
にthis
ポインタを変換することができないと文句を言い。
constで非const関数を実行できないのですが、なぜGetAt()
がconstを返すのですか?さらに重要なのは、constの返り値が実際に設計通りであり、混乱しない場合、この操作を実行するにはどうすればよいですか?
_butなぜGetAt()はconst?_を返すのですか?誰かがそれをこのようにすることを決めたからです。 – muXXmit2X
[GetAt](https://msdn.microsoft.com/en-us/library/aa314338(v=60).aspx)のドキュメントを見ると、 'TCHAR'を返すことがわかります。これは' wchar_t'または 'char'です。どのようにしてドットから関数を呼び出すことができますか? – teivaz
GetAtは、定義された位置にある文字のコピーを返します。したがって、GetAtを使用して文字列を変更することはできません。だから、それはconstです。戻り値の型TCHARはおそらくchar型かwchar_t型であり、メンバ関数はありません。完全な文字列でのみMakeUpper()を呼び出すことができます。 – lars