2013-07-22 241 views
1

我的功能:我的功能不传输SUBSTR C++

void Object::actionsFace(std::string &line, int &iteration_face); 

我发送SUBSTR运作

actionsFace(line.substr(begin, i), cnt) 

这是行不通的。

如果我使用:

 std::string test = line.substr(begin, i); 

     actionsFace(line.substr(begin, i), cnt); 

正常工作。

如何使用substr我的功能?

+1

你不说你叫'actionsFace(试验,CNT)',而不是'actionsFace(线.substr(begin,i),cnt)'? – Emiliano

回答

6

您正尝试将临时文件绑定到非常量引用,该临时文件由std::string::substr返回。你不能这样做,但你可以绑定到一个const引用:

void Object::actionsFace(const std::string &line, int &iteration_face); 

这将传递到临时字符串的引用,但你不能修改它的函数内。

或者,您可以明确地创建一个副本,就像您的示例中的test一样。另外,如果你只需要你的函数里面的字符串的本地副本,你可以按值传递:

void Object::actionsFace(std::string line, int &iteration_face);