より多くのコールバックを必要とするクラスがあります。インターフェイスを使用してそれらを実装しようとしています。
class CallbacksInterface
{
public:
virtual bool mycallback1() = 0;
virtual bool mycallback2() = 0;
virtual bool mycallback3() = 0;
};
Class BusImplementation{
public:
addRequest(bool (CallbacksInterface::*callback)());
}
コールバックはaddRequest()メソッドのパラメーターであり、インターフェースメソッドへのポインターとして定義されます。だからリクエストを追加したいです。
//class with callbacks
class Main:CallbacksInterface{
public:
bool mycallback1(){..};
bool mycallback2(){..};
bool mycallback3(){..};
//..
}
BusImplemantation bus;
Main main;
bus.addRequest(main.mycallback1);
bus.addRequest(main.mycallback2);
bus.addRequest(main.mycallback3);
しかし、BusImplemantationクラスにコールバックを渡すことはできません
error: argument of type 'bool (Main::)()' does not match 'bool (CallbacksInterface::*)()'
テンプレートを使用した解決策があると思いますが、組み込みデバイスをプログラミングしていて、コンパイラーが制限されています。