2012-08-12 104 views
0

我有这样的功能:find()方法

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*’ 

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

+1

这称为运算符优先级,请参阅http://en.wikipedia.org/wiki/Operators_in_C_and_C%2B%2B#Operator_precedence。 '*'的优先级低于'.'。 – Zeta 2012-08-12 17:02:53

回答

3

*url.find()相当于*(url.find())当你真正想要的是(*url).find() 。更好的是,你应该使用url->find()来代替。

这样做的原因是反引用(*)运算符具有比所述元件选择(.)运算下precedence

3

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

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