Call Back Function C++ Sample

来源:互联网 发布:js产品展示特效 编辑:程序博客网 时间:2024/05/23 01:26


DataInterface.h


class IRecver{public:virtual void getResult(int result)=0;};class ISender{public:virtual void setRecver(IRecver* pRecver)=0;virtual void calculate(int a, int b)=0;};extern "C"{ISender * CreateSender();void FreeSender(ISender * sender);}


DLLTest.cpp


#include "DataInterface.h"class Sender : public ISender{public:void setRecver(IRecver* pRecver){this->pRecver = pRecver;}void calculate(int a, int b){m_result = a + b;threadFunc();}private:IRecver* pRecver;int m_result;int threadFunc(){pRecver->getResult(m_result);return 0;}};ISender* CreateSender(){return new Sender();}void FreeSender(ISender* sender){delete sender;}


Source.def


LIBRARY DLLTestEXPORTSCreateSenderFreeSender



main.cpp


#include "../DLLTest/DataInterface.h"#include <iostream>#pragma comment(lib,"../Debug/DLLTest.lib")class MyRecver : public IRecver{public:void getResult(int result){std:: cout << "The result is : " << result << std::endl;}};int main(){MyRecver myRecver;ISender* pSender = CreateSender();pSender->setRecver(&myRecver);pSender->calculate(1,4);FreeSender(pSender);int i;std::cin >> i;return 0;}



result:



0 0