【发布时间】:2017-08-25 10:15:10
【问题描述】:
我有一个CStringArray,我想打电话给CString::MakeUpper(),你知道,把它改成大写。
我正在尝试这样:
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 的返回确实是设计的,而不是乱七八糟的,我该如何执行此操作?
【问题讨论】:
-
但为什么 GetAt() 返回一个 const? 因为有人决定这样做。
-
查看GetAt 的文档,我可以看到它返回
TCHAR,即wchar_t或char。你如何设法从它调用一个带有点的函数? -
GetAt 在定义的位置返回字符的副本。因此,您不能使用 GetAt 修改字符串。这就是为什么它是常量。返回类型 TCHAR 可能是 char 或 wchar_t,这是一种普通类型,没有任何成员函数。您只能在完整的字符串上调用 MakeUpper()。
-
我编辑显示定义
标签: c++ arrays string visual-studio mfc