テンプレートを使用して、Javaで記述されたコードをC++に書き直そうとしています。これが例です。
コードは次のようになります。
class IBookUpdatedHandler {
public:
virtual ~IBookUpdatedHandler() {}
virtual void updateBook(int bookIndex)=0;
};
class IBookFiredHandler {
public:
virtual ~IBookUpdatedHandler() {}
virtual void fireBook(int bookIndex)=0;
};
template <typename T>
class Dispatcher {
private:
list<T> listeners;
const char* methodName;
public:
Dispatcher(const char* name) {
this->methodName = name;
}
void add(T listener) {
listeners.push_back(listener);
}
void dispatch() {
// listeners loop
for(typename list<T>::iterator pos = listeners.begin(); pos != listeners.end(); pos++)
{
// i don't know what is in the box .. (list<T>)..
// call ..
// listener could have (*pos)->do_somethig() ?
}
}
};
Dispatcher<IBookUpdatedHandler*> *dispatcher = new Dispatcher<IBookUpdatedHandler*>("updateBook");
Dispatcher<IBookFiredHandler*> *dispatcher = new Dispatcher<IBookFiredHandler*>("fireBook");
関数内でupdateBook
またはを呼び出したいのですが、C ++では、型名に何が含まれているかを知る方法がないと思います。fireBook
dispatch()
Javaと同等のC++はありgetMethod
ますか?