[英]Returning a struct with a function member that refer to a variable in parent scope
我正在嘗試實現一個函數,該函數返回帶有引用父作用域中變量的成員函數的結構。
struct Scanner {
int nextToken();
}
Scanner test() {
token = 1;
return {
int nextToken() {
return token;
}
};
}
我不知道這在C++
是否可行。 我是JavaScript開發人員,我不知道該如何完成。 關於如何引用變量token
並返回可以提供nextToken()
函數的結構或類,有什么建議嗎?
在舊版本的C ++標准中,您無法做到這一點(至少不那么容易)。
更好(也更簡單)的方法是使用C ++ 11的lambda。
諸如此類(目前尚未試用,很可能在某些地方包含語法問題或其他錯誤):
struct Scanner {
std::function<int()> nextToken;
};
Scanner test() {
token = 1;
return {
[=](){ return token; }
};
}
但是,您真的確定需要這樣做嗎? 對於簡單/經典的類繼承,這似乎是一個完美的用例(也可以在結構中使用):
struct Scanner {
virtual int nextToken() { return 0; }
}
struct TestScanner : public Scanner {
virtual int nextToken() { return 1; }
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.