0

我有这样的功能:

int find_string ( string *url){
   if(*url.find() != string::npos){
        [...]
   }
   [...]
}

并这样称呼它:

find_string(&url);

但是我得到了以下编译错误:

request for member ‘find’ in ‘url’, which is of non-class type ‘std::string*’

为什么会发生这种情况,最重要的是,我该如何解决这个问题?(当没有指针时,它正在工作)

4

2 回答 2

3

使用(*url).find()或者,更好url->find()

*url.find尝试调用find()函数然后使用operator *

于 2012-08-12T17:01:33.603 回答
3

*url.find()相当于*(url.find())你真正想要的是什么时候(*url).find()。更好的是,您应该url->find()改用它。

原因是取消引用 ( *) 运算符的优先级低于元素选择 ( .) 运算符。

于 2012-08-12T17:02:46.660 回答