引数をとらない関数オブジェクトをメンバ変数に複数保存しておきたいのですが...
例えば、
class hoge {
private:
/* 関数を保存しておく型 */ funcs;
public:
template<typename F>
void SetFunc(int i, F func)
{
funcs[i] = func;
}
void CallFunc(int i)
{
funcs[i]();
}
};
このようにしたいです。
方法は違ってもいいので教えていただければと思います。
コレ↓でいいかしら。
#include <iostream>
#include <functional>
using namespace std;
class hoge {
private:
function<void()> funcs[3];
public:
void SetFunc(int i, function<void()> func) {
funcs[i] = func;
}
void CallFunc(int i) {
funcs[i]();
}
};
void ff() { cout << "function f\n"; }
void gg() { cout << "function g\n"; }
void hh() { cout << "function h\n"; }
int main() {
hoge h;
h.SetFunc(0, ff);
h.SetFunc(1, gg);
h.SetFunc(2, hh);
h.CallFunc(0);
h.CallFunc(1);
h.CallFunc(2);
}
できました。
ありがとうございます。
ツイート | ![]() |