定义一个私有的std::function对象,然后提供一个接口供外部调用设置该对象,在使用该处理数据。
#ifndef THREADOBJECT_H
#define THREADOBJECT_H
#include <functional>
#include <string>
class ThreadObject
{
public:
ThreadObject(){}
~ThreadObject(){}
public:
void settask(std::function<void(std::string)> task);
void run();
private:
std::function<void(std::string)> m_task;
};
void ThreadObject::settask(std::function<void (std::string)> task)
{
m_task = task;
}
void ThreadObject::run()
{
if(m_task)
{
m_task("http://172.0.0.1");
}else return;
}
void downTask(std::string str)
{
std::cout << "download:" << str << std::endl;
}
#endif // THREADOBJECT_H
#include <iostream>
#include "threadobject.h"
#include <functional>
using namespace std;
int main()
{
ThreadObject threadobj;
threadobj.settask(std::bind(&downTask,std::placeholders::_1));
threadobj.run();
return 0;
}