1

パブリック テンプレート メソッドを持つクラスがあります。このクラスには、クラス テンプレートを介して渡したい 2 つの動作戦略があります。

template<class Strategy>
class SomeClass {
public:
    template<class B>
    void ProcessType(){}
};

// And do something like this:
SomeClass<Strategy1> sc();
sc.ProcessType<SomeClassType>();
sc.ProcessType<SomeClassType2>();

SomeClass<Strategy2> sc2();
sc2.ProcessType<SomeClassType>();
sc2.ProcessType<SomeClassType2>();

しかし、このコードはコンパイルされません。このように使用法を正確に保つ必要があります(戦略を介して操作するため)。

4

1 に答える 1

4

これが問題です:

SomeClass<Strategy1> sc();

これは、sc引数を取らずに を返す関数の宣言ですSomeClass<Strategy1>。これは一般に厄介なパースとして知られています (ただし、最も厄介なパースではありません)。あなたが望むものは:

SomeClass<Strategy1> sc;
于 2013-02-22T10:36:48.300 に答える