【发布时间】:2013-10-11 00:34:15
【问题描述】:
我是函数指针的新手,我写了一个小程序,其中主类使用 Test 类来填充成员函数指针的列表。从我的主类中,我想调用 ExeFuns() 来调用每个成员函数,我不知道该怎么做。任何帮助是极大的赞赏。谢谢。
Test.h
Class Test{
public :
void CallFun1();
void CallFun2();
void AddFuns();
void ExeFuns();
};
Test.cpp
std::vector<void (Test::*) ()> callist;
void Test::AddFuns(){
callist.push_back(&Test::CallFun1);
callist.push_back(&Test::CallFun2);
}
void Test::ExeFuns(){
for (int i = 0 ; i<eventlist.size(); i++)
{
callist[i](); // error!
}
}
void Test::CallFun1(){ cout<<"Fun 1"<<endl; }
void Test::CallFun2(){ cout<<"Fun 2"<<endl; }
Main.cpp
main()
{
Test obj;
obj.AddFuns();
obj.ExeFuns();
}
【问题讨论】:
-
你需要一个对象来调用它们。
-
如果你有一个兼容 C++11 的编译器(现在几乎都是),那么你可能想看看
std::function和std::bind。如果你没有 C++11,那么 Boost.Function 和 Boost.Bind 也一样。 -
哦,您的
ExeFuns循环中有一个错误。
标签: c++