我问这个是因为我在编译时出现了编译错误:
*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 ++中,类函数一般不能以这种方式工作吗?
注意:我知道我可能不需要指针。这只是我教授关于此片段的作业规范之一。
答案 0 :(得分:5)
答案 1 :(得分:4)
你应该看看C ++ operator precedence:
std::string string2 = "hello";
std::string* string3 = &string2;
(*string3).find('h');
需要额外的括号对的原因是因为“元素选择参考”(即你的.
字符)与“间接”相比具有更高的优先级(取消引用)“(即你的*
字符)。
正如您的编译器提示的那样,这也可以起作用:
string3->find('h');
作为一个小的调试帮助:您收到的错误消息说明了您需要知道的解决问题的方法
错误:请求'string3'中的成员'find',这是指针 输入'std :: string * [...]
即。 “你在指针对象上请求成员'find',我该怎么解释这个?这对我来说不合适”