Timer.h:C++多型
TimerImpl.h:
class TimerImpl: public Timer<long> {
public:
TimerImpl() {
}
~TimerImpl() {
}
long get();
};
FpsMeter.h(バージョン1):
template <class T>
class FpsMeter {
private:
Timer<T>* timer;
public:
FpsMeter (Timer<T>* timer) {
this->timer = timer;
}
...
};
この例では、動作します。しかしそれはかなり見えません。
Timer<long>* t = new TimerImpl();
FpsMeter<long>* f1 = new FpsMeter<long> (t);
ここでは、追加のテンプレートがたくさん使用されています。どのように私はマルチタイプのインターフェイスのこのアイデアを実現することができますタイプは、実装によって定義され、ユーザークラスは新しいタイプを定義していない、それは実装のタイプを使用する必要があります。
あなた
FpsMeter
クラスが多型にする必要がありますか? –get()が異なる型を返すようなインタフェースのバージョンを望むなら、テンプレートはAFAIUを行う方法です。 –
@Kerrek SBはい、あります。私は別のタイマーを使いたい。 – itun