更新:(改写)。我希望通过将类成员函数的运行时分配给以其他类成员为条件的许多函数之一来提高代码的计算效率。
一种推荐的解决方案使用#include <functional>
and function<void()>
,如简单的测试示例所示:
#include <iostream>
using namespace std;
struct Number {
int n;
function(void()) doIt;
Number(int i):n(i) {};
void makeFunc() {
auto _odd = [this]() { /* op specific to odd */ };
auto _even = [this]() { /* op specific to even */ };
// compiles but produces bloated code, not computatinally efficient
if (n%2) doIt = _odd;
else doIt = _even;
};
};
int main() {
int i;
cin >> i;
Number e(i);
e.makeFunc();
e.doIt();
};
我发现编译的代码(即调试程序集)非常复杂,并且可能计算效率不高(所需的goal).
是否有人有一种替代结构可以实现最终目标计算效率高在运行时有条件地定义类成员函数的方法。
A 捕获lambda 表达式不能像您一样分配给常规函数指针。
我建议使用
std::function<void()> doIt;
代替
void (*doIt)();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)