我有这个功能:
std::string reverse_words(const std::string& in)
{
std::stringstream ss(in);
std::string item, result;
while (std::getline(ss, item, ' ')) {
the_stack.push(item);
}
for (int i = 0; i < the_stack.size(); i++)
{
result += " " + the_stack.top();
the_stack.pop();
}
return result;
}
然而,当我试着在这里打电话时:
int main(int argc, char** argv) {
reverse* s = new reverse();
std::string in = "fdgdfgbjfd gdf gjhfd";
std::string reverse_words = s.reverse_words(&in);
cout << reverse_words;
return 0;
}
我在std::string reverse_words = s.reverse_words(&in);
上收到错误(在's'中请求成员'reverse_words',这是指针类型'reverse *'(也许你打算使用' - &gt;'?))。我无法理解我在哪里出错了。
答案 0 :(得分:4)
你的功能
std::string reverse_words(const std::string& in)
采用const引用,但是您传递了一个地址。传递参数
时删除&
std::string reverse_words = s.reverse_words(&in);
^change to-> ^ remove this
接下来,s
是一个指针,因此您必须通过->
运算符调用成员函数,例如
s->reverse_words(in);
旁注:即使内部引用通常作为指针实现,也不应该在通过引用传递参数时使用指针语法。换句话说,&
address-of运算符在通过引用传递时不应该出现。