我有一个CStringArray
,我想对它打电话CString::MakeUpper()
,你知道的,大写。CStringArray :: GetAt(int index)返回一个常量。为什么?
我想这样的:
mycstringarray.GetAt(0).MakeUpper();
其中mycstringarray被宣布是这样的:
CStringArray mycstringarray;
mycstringarray.SetSize(46);
mycstringarray.setAt(0,CString("StayClassySandiego"))
但Visual Studio中抱怨说,它不能this
指针转换从const CString
到&
。
我得到的那个不能在const上执行非const函数,但为什么GetAt()
返回一个const?更重要的是,如果const的返回确实是由设计决定的并且不会被混淆,我该如何执行这个操作?
_but为什么GetAt()返回一个const?_因为有人决定这样做。 – muXXmit2X
查看[GetAt](https://msdn.microsoft.com/en-us/library/aa314338(v = vs.60).aspx)的文档,我可以看到它返回'TCHAR',它或者是' wchar_t'或'char'。你如何设法用点来调用一个函数? – teivaz
GetAt返回定义位置处的字符副本。所以你不能通过使用GetAt来修改字符串。这就是为什么它是常量。返回类型TCHAR可能是一个char或wchar_t,它是一个平凡的类型,并没有任何成员函数。您只能在完整的字符串上调用MakeUpper()。 – lars