函数参数与函数调用不匹配

时间:2015-05-10 04:14:44

标签: c++

我有这个功能:

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;'?))。我无法理解我在哪里出错了。

1 个答案:

答案 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运算符在通过引用传递时不应该出现。