[英]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.