通过函数传递引用?

时间:2014-02-13 19:10:09

标签: c++ function reference ostringstream

我需要在函数中获取一些代码并将其放在另一个函数中。唯一的问题是变量现在超出范围。每当我试图将它们作为参考传递时,我都会遇到一连串的错误。

我的代码的相关部分看起来像这样:

Route::Route(std::string source) //constructor function
{
    std::ostringstream oss;

    function(source, oss);
}

void function(std::string* &source, std::ostringstream* &oss)
{
    //function
}

构造函数应该使用source和oss做事,然后函数也应该用它们做事。这纯粹是一种语法错误,还是我想做一些不可能的事情?

2 个答案:

答案 0 :(得分:3)

该函数不会引用对象,而是引用指针。它应该是

void function(std::string &source, std::ostringstream &oss)

尽管source可能应该通过值(std::string)或常量引用(const std::string &)传递,除非该函数应该修改它。

答案 1 :(得分:2)

这是一个纯粹的语法错误,你想要做的很好:

Route::Route(std::string source) //constructor function
{
    std::ostringstream oss;

    function(source, oss);
}

void function(std::string& source, std::ostringstream &oss)
{
    //function
}

你只需要摆脱*,这意味着你的情况(std::string*&)对字符串指针的引用。

我猜你可能误解了那些C语言的&运算符的语法,它将变量的地址赋予了获取地址的foo*类型。