[英]Trouble using callback with class member function
我在编译以下代码时遇到问题。 我通常可以使用回调函数,但是似乎在使用成员函数时会出现问题。 您知道我的参数startPlayback的声明/定义是什么问题吗?
class VmapPlayer
{
void startPlayback();
void playAdBreak(int a, void (*callback)());
};
void VmapPlayer::playAdBreak(int a, void (*callback)())
{
cout << a << endl;
//callback();
}
void VmapPlayer::startPlayback()
{
playAdBreak(5, startPlayback); // Compile issue with "startPlayback" parameter
}
void(* callback)()将回调声明为函数指针,但是startPlayback不是自由函数,而是成员函数。 这是修复它的一种方法:
class VmapPlayer
{
void startPlayback();
void playAdBreak(int a, void (VmapPlayer::*callback)());
};
void VmapPlayer::playAdBreak(int a, void (VmapPlayer::*callback)())
{
cout << a << endl;
(this->*callback)();
}
void VmapPlayer::startPlayback()
{
playAdBreak(5, &VmapPlayer::startPlayback);
}
如果需要更大的灵活性,并且C ++ 11可用,则可以使用std::function<void()>
保留回调,并用lambda表达式填充,例如[this](){ startPlayback(); }
[this](){ startPlayback(); }
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.