0

So my instructor handed out some code that I believe does not work at all and I want to get some clarification on it. He used this in his hand out notes (it implies that this is correct).

template<class T>
class State
{
public:
    virtual void Enter(T*)=0;
    virtual void Execute(T*)=0;
    virtual void Exit(T*)=0;
    virtual ~State(){};
};

I can see what he is trying to do but I believe the compiler will not like it at all. Can anyone help explain why this does or does not work.

4

1 に答える 1

2

テンプレートメンバー関数ではないメンバー関数がないため、これは機能するはずです。基本クラスの引数はコンパイル時に推定でき、呼び出す実際の関数は実行時に決定できます。

あなたがこれを持っていたら:

class Foo
{
    template< typename T > virtual void Bar( T * ) = 0;
};

コンパイル時にこの関数に渡される可能性のあるすべての潜在的な型を処理する関数を生成する方法がないため、問題が発生します。

于 2012-11-16T16:42:56.283 に答える