JavaのRunnableインターフェースに似たものを実現したいと思います。私はそのようにそれをしようとします:
class Runnable{
public:
void start(){
t = std::thread(&Runnable::run, this);
}
protected:
virtual void run(){
}
};
アイデアは単純です。runメソッドをオーバーロードしたいのですが、start()はオーバーロードされたメソッドを起動する必要があります。しかし...それは機能しません。
terminate called after throwing an instance of 'std::system_error'
what(): Operation not permitted
PS私は、Runnableから派生したクラスのインスタンスを、dlopenを使用したダイナミックライブラリからロードします。