繁体   English   中英

使用回调与类成员函数时遇到问题

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM