我已经完成了这个简单的模板结构,可以在我的应用程序中表示一些“ UI参数”。
template<typename T>
struct Param{
std::string name;
T value;
};
和另一个类具有一堆该结构的向量作为属性:
std::vector<Param<int>> paramsInt;
std::vector<Param<float>> paramsFloat;
std::vector<Param<std::string>> paramsString;
std::vector<Param<void(*)()>> paramsAction;
当然,它对于int,float和string都可以正常工作,但是函数指针1存在问题。 现在,我通过为其提供lambda函数来使用它。
Param<void(*)()> action{"generate mesh", [](){
// do something
}};
在阅读了关于stackoverflow的一些知识后,我很快意识到我无法使用此lambda捕获任何内容。 据我了解,捕获的lambda无法转换为函数指针。
我不能在第一位置使用函数指针吗? 我真的不需要该函数返回任何东西,但我希望它使用从其调用的类的方法。