Я искал в Интернете и stackoverflow конкретный ответ, но, похоже, не нашел его. Мне нужно создать общий класс, а затем реализовать определенные функции. Мои конкретные инструкции были такими: Вам необходимо использовать параметры выражения шаблона и специализацию класса шаблона и частичную специализацию.
У меня есть шаблонный класс:
template <class T, int x, int y>
class Z {
T **array[x][y];
public:
Z();
void print();
//and other methods
};
Мне необходимо:
1) Только Z, где x = 2 и y = 2, должны иметь общедоступный метод void J ()
2) Для char Z x = 2 и y = 2 J что-то сделает; для всего остального он делает что-то еще
3) Только для Z, где T - char, массив будет инициализирован некоторым значением. Для всего остального это 0
Естественно, это работает:
template<class T, int x, int y>
Z<T,x,y>::Z<T,x,y>() { //initialize to 0 }
Но это не так:
template<int x, int y>
Z<char,x,y>::Z<char,x,y>() { //initialize to something}
И аналогично (предположим, что J существует) это не работает:
template <class T>
void Z<T,2,2>::J() { //something }
У меня вопрос:
Есть ли простой способ реализовать вышеперечисленные пункты? Мне нужно сохранить все остальные методы в Z. Подсказка или указание в правильном направлении (возможно, я пропустил вопрос, так как их много) было бы полезно.
Спасибо.
J
? Непонятно, чем вы хотите заниматься. - person Synxis   schedule 19.11.2012class Z<char, x, y>'" and "template definition of non-template
void Z ‹char, x, y› :: J () ' - person aoi   schedule 19.11.2012