0

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

我的代码的相关部分如下所示:

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

    function(source, oss);
}

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

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

4

2 回答 2

3

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

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

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

于 2014-02-13T19:13:11.327 回答
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*获取地址的类型。

于 2014-02-13T19:12:09.767 回答