相关疑难解决方法(0)

实现boost :: thread包装器接口时"调用纯虚方法"

我有一个小包装器,它集中了与线程相关的内容:

class Thread {
protected:
    boost::thread *m_thread;

    virtual void work() = 0;

    void do_work() {
        work();
    }

public:
    Thread() : m_thread(NULL) {}
    virtual ~Thread() {
        catch_up();
        delete m_thread;
    }

    inline void catch_up() {
        if(m_thread != NULL) {
            m_thread->join();
        }
    }

    void run() {
        m_thread = new boost::thread(boost::bind(&Thread::do_work, boost::ref(*this)));
    }
};
Run Code Online (Sandbox Code Playgroud)

当我实现它时,请说明如下:

class A : public Thread {
    void work() {}
};
Run Code Online (Sandbox Code Playgroud)

在 :

A a; a.run();
Run Code Online (Sandbox Code Playgroud)

我得到了一个运行时终止,显示了一个非常"纯粹的虚拟方法".我认为这是boost :: bind参数,但我不知道怎么说"使用虚拟纯实现"...

先谢谢了.

问候,

Mystère先生

c++ multithreading boost pure-virtual

6
推荐指数
1
解决办法
2817
查看次数

标签 统计

boost ×1

c++ ×1

multithreading ×1

pure-virtual ×1