У меня есть шаблонный класс
template <typename Data>
class C
{
.....
}
В большинстве случаев я полагаюсь на компилятор, который позволяет мне подставлять типы для данных.Я вызываю методы foo (), goo () для объектов типа Data, поэтому то, что я подставляю, должно это обеспечить.
Теперь мне нужно заменить int и string для моего типа данных.Я не хочу специализироваться, потому что класс уже слишком большой и потребует специализации каждого метода (только с небольшим изменением кода).
Мои параметры (скажите, пожалуйста, если их больше)
1) Я могу предоставить классы-обертки для int и string, которые реализуют методы foo (), goo () и т. Д.
2) предоставляют свойства класса traits, которые вызывают foo () или goo () для объектов классов, которые предоставляют foo (), goo () (это мои настоящие замещаемые классы) и специализируют эти классы для int и string.
Вопросы
1) Каковы относительные достоинства 1 против 2?
2) Мои классы черт будут иметь статические методы.Может ли класс признаков иметь нестатические методы?Я вижу, что большинство классов признаков определяют константы в STL.
3) Я делаю классы признаков глобальными или я должен передать их в качестве параметра шаблона для класса C?