我需要在函数中获取一些代码并将其放在另一个函数中。唯一的问题是变量现在超出范围。每当我试图将它们作为参考传递时,我都会遇到一连串的错误。
我的代码的相关部分看起来像这样:
Route::Route(std::string source) //constructor function
{
std::ostringstream oss;
function(source, oss);
}
void function(std::string* &source, std::ostringstream* &oss)
{
//function
}
构造函数应该使用source和oss做事,然后函数也应该用它们做事。这纯粹是一种语法错误,还是我想做一些不可能的事情?
答案 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*
类型。