我问这是因为尝试编译时出现编译错误:
*string3.find('h');
我得到的错误是
error: request for member 'find' in 'string3', which is of pointer type 'std::string* {aka std::basic_string<char>*}' (maybe you meant to use '->' ?)
我认为这会起作用,因为* string3是一个字符串,并且*
运算符取消了对指针的引用,因此我正在使用实际的字符串。通常,类函数在C ++中不能以这种方式工作吗?
注意:我知道我可能不需要指针。这只是我的教授针对此摘要所来自的作业的规范之一。
您应该看一下C ++运算符的优先级:
std::string string2 = "hello";
std::string* string3 = &string2;
(*string3).find('h');
之所以需要额外的一对括号,是因为“按引用选择元素”(即您的.
角色)比“间接(取消引用) ”(即您的*
角色)具有更高的优先级。
就像您的编译器提示的那样,这也可能起作用:
string3->find('h');
作为一个小的调试帮助:您收到的错误消息准确说明了解决问题所需的知识
错误:请求成员'find'在'string3'中,其指针类型为'std :: string * [...]
即“您在指针对象上请求成员'查找',我应该怎么解释呢?这对我来说似乎不正确”
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句