1

我的功能:

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?

4

1 回答 1

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);
于 2013-07-22T11:37:13.953 回答