Использование шаблонного класса с шаблонным методом в Stack Overflow

У меня есть класс, который имеет общедоступные шаблонные методы.
Этот класс имеет 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>();

Но этот код не компилируется. Мне нужно, чтобы использование было точно таким же (манипулировать только с помощью стратегии).

1

Решение

Это проблема:

SomeClass<Strategy1> sc();

Это объявление функции с именем sc который не принимает аргументов и возвращает SomeClass<Strategy1>, Это обычно называют неприятным разбором (но не самый досадный разбор). То, что вы хотите, это:

SomeClass<Strategy1> sc;
4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]