Vector存放类成员函数指针
#include <iostream>
#include <vector>
class Test
{
public:
Test();
~Test();
void Fun_1();
void Fun_2();
void Run();
private:
std::vector<void (Test::*)()> funs_;
};
Test::Test() : funs_({&Test::Fun_1, &Test::Fun_2}) {}
Test::~Test() {}
void Test::Fun_1()
{
std::cout << __func__ << std::endl;
}
void Test::Fun_2()
{
std::cout << __func__ << std::endl;
}
void Test::Run()
{
for (int i = 0; i < funs_.size(); ++i) {
(this->*funs_[i])();
}
// 用for (auto fun : funs_)怎么实现?
}
int main(void)
{
class Test test;
test.Run();
return 0;
}
结果输出:
Fun_1
Fun_2