C++ 返回包含引用父作用域中变量的函数成员的结构
我试图实现一个函数,该函数返回一个结构,其成员函数引用父作用域中的变量C++ 返回包含引用父作用域中变量的函数成员的结构,c++,C++,我试图实现一个函数,该函数返回一个结构,其成员函数引用父作用域中的变量 struct Scanner { int nextToken(); } Scanner test() { token = 1; return { int nextToken() { return token; } }; } 我不知道这在C++中是否可行。我是一名JavaScript开发人员,不知道如何实现这一点。关于如何引用变量令牌< />代码,返回一个结构或类,它可以提供一个
struct Scanner {
int nextToken();
}
Scanner test() {
token = 1;
return {
int nextToken() {
return token;
}
};
}
我不知道这在
C++
中是否可行。我是一名JavaScript开发人员,不知道如何实现这一点。关于如何引用变量<代码>令牌< />代码,返回一个结构或类,它可以提供一个函数<代码> nExttoKe()/<代码>?/p> < p>不能在C++标准的旧版本中完成(至少不那么容易)。
更好(更简单)的方法是使用C++11的lambdas
类似这样的情况(目前尚未测试,很可能包括一些语法问题或其他错误):
它应该是
std::function nextToken代码>(更改太小,无法进行编辑)。但是,是的,使用继承。在这种情况下,如果您使用的是C++11(您应该这样做,已经4年了:)),我会在TestScanner中以int-nextToken()override{return 1;}
的形式编写该方法。我不确定他是否需要lambda(可能不需要),但这是javascript中最自然的做法。。。
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; }
}