我有一個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