2014-02-13 163 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 &)來傳遞,除非函數應該修改它。