私は、関数ポインターとサブクラス化されたオブジェクトのどちらかを選択する立場にあります。明確にするために、何らかのアクション (タイマーなど) をオブジェクトに通知する必要があるとします。次の 2 つの選択肢を参照してください (デモ用の非常に基本的なコードです)。
バージョン 1
typedef void TimerCallback(void *args);
class Timer{
public:
Timer();
~Timer();
void schedule(TimerCallback *callback, void *args, long timeout)=0;
void cancel();
};
バージョン 2
class TimerTask{
public:
TimerTask();
virtual ~TimerTask();
void timedout()=0;
};
class Timer{
public:
Timer();
virtual ~Timer();
void schedule(TimerTask *callback, long timeout)=0;
void cancel();
};
どれが標準的な C++ の方法で、どれが効率的ですか? この点に関して他に提案があれば教えてください。
この点について不明な点がある場合はお知らせください。
ありがとう