C++ Function Callbacks: Cannot convert from a member function to a function signature

后端 未结 6 526
盖世英雄少女心
盖世英雄少女心 2020-11-29 12:22

I\'m using a 3rd party library that allows me to register callbacks for certain events. The register function looks something like this. It uses the Callback signature.

6条回答
  •  没有蜡笔的小新
    2020-11-29 12:57

    class ICallBackInterface
    {
    public:
        virtual void FireCallBack( std::string& str ) = 0;
    };
    
    std::set CallBackMgr;
    
    class MyStruct : public ICallBackInterface
    {
    public:
        MyStruct()
        {
            CallBackMgr.insert( this );
        }
    
        ~MyStruct()
        {
            CallBackMgr.erase( this );
        }
    
        virtual void FireCallBack( std::string& str )
        {
            std::cout << "MyStruct  called\n";
        }
    };
    
    void FireAllCallBack(std::string& str )
    {
        for ( std::set::iterator iter = CallBackMgr.begin();
            iter != CallBackMgr.end();
            ++iter)
        {
            (*iter)->FireCallBack( str );
        }
    }
    

    This is another way to use polymorphism to achieve the same effect

提交回复
热议问题