我是新來的函數指針,我寫了一個小程序,其中主類使用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();
}
您需要一個對象來調用它們。 – chris
如果你有一個兼容C++ 11的編譯器(幾乎所有的都是今天的編譯器),那麼你可能想看看['std :: function'](http://en.cppreference.com/w/cpp/utility/函數/函數)和['std :: bind'](http://en.cppreference.com/w/cpp/utility/functional/bind)。如果你沒有C++ 11,那麼[Boost.Function](http://www.boost.org/doc/libs/1_54_0/doc/html/function.html)和[Boost.Bind](http ://www.boost.org/doc/libs/1_54_0/libs/bind/bind.html)也是這樣做的。 –
噢,你在ExeFuns循環中有一個錯誤的錯誤。 –