std::functions 错误向量
Vector of std::functions error
我有一个 std::functions 的向量,但它无法编译。如果我这样做:
#include <vector>
#include <functional>
using namespace std;
vector<function> functions;
我明白了 note: expected a type, got ‘function’
error: template argument 2 is invalid
。我正在使用 -std=c++11
在 g++ 上编译。我怎样才能让它工作?谢谢!
std::function
要求您为其提供将函数表示为模板参数所需的其他类型(return 类型,参数类型)。没有模板参数 std::function
是未定义的,这会给你这里的错误。
因此,在尝试定义包含函数的向量之前,您需要先弄清楚函数的类型。
您需要指定要保留在向量中的函数的类型,如下所示:
#include <vector>
#include <functional>
using namespace std;
vector<function<int()>> functions;
int main() {
functions.push_back([](){ return 1; });
return 0;
}
> g++ test.cpp -std=c++1y
在这里,您指定 functions
将采用不带参数的 function
,而 returns 将采用 int
。
我有一个 std::functions 的向量,但它无法编译。如果我这样做:
#include <vector>
#include <functional>
using namespace std;
vector<function> functions;
我明白了 note: expected a type, got ‘function’
error: template argument 2 is invalid
。我正在使用 -std=c++11
在 g++ 上编译。我怎样才能让它工作?谢谢!
std::function
要求您为其提供将函数表示为模板参数所需的其他类型(return 类型,参数类型)。没有模板参数 std::function
是未定义的,这会给你这里的错误。
因此,在尝试定义包含函数的向量之前,您需要先弄清楚函数的类型。
您需要指定要保留在向量中的函数的类型,如下所示:
#include <vector>
#include <functional>
using namespace std;
vector<function<int()>> functions;
int main() {
functions.push_back([](){ return 1; });
return 0;
}
> g++ test.cpp -std=c++1y
在这里,您指定 functions
将采用不带参数的 function
,而 returns 将采用 int
。