2014-02-13 165 views
0

我需要在一个函数中使用一些代码,并把它放在另一个函数中。唯一的问题是变量现在超出了范围。每当我尝试将它们都作为参考传递时,我可以用一个错误的冲击击中。通过函数传递引用?

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

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

    function(source, oss); 
} 

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

构造应该做的事情与源和OSS,再功能上也应该做的事情与他们。这纯粹是一个语法错误,还是我试图做一些不可能的事情?

+2

您已经将参考语法与指针语法混淆了。摆脱'*'。 –

+0

'*'是一个指针。 '*&'是对指针的引用。放下'*',你在这里没有指针...... – David

回答

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*类型获取地址。

3

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

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

虽然source可能应该通过值(std::string)或恒定的基准(const std::string &)来传递,除非函数应该修改它。