Я довольно давно пытаюсь создать шаблон, который принимает разные типы данных.У класса Z2 определяется знак целого числа, являющегося классом перечисления, указанным таким образом:
enum class Z2 {Plus, Minus};
Мне нужно создать шаблон с именем mypow
, который имеет тип Z2 для любого типа введенных данных.в нем (типы float, int, Z2 и т. д.), которые будут возвращать знак введенных данных в формате Z2::Plus
или Z2::Minus
.
Моя последняя попытка заключается в следующем:
template <class T> Z2 mypow(T a,unsigned int N){
if (a==Z2::Plus || a>0){
return Z2::Plus;
}else if((a==Z2::Minus||a<0) && N%2==0){
return Z2::Plus;
}else{
return Z2::Minus;
}
}
Однако каждый раз, когда я запускаю полученный код,
error: no match for ‘operator>’ (operand types are ‘Z2’ and ‘int’)
if (a==Z2::Plus || a>0){
~^~
У меня возникают проблемы с пониманием этого сообщения об ошибке.Итак, мои вопросы:
- 1) Что означает сообщение об ошибке?
- 2) Как мне сделать, чтобы шаблон принимал условия для нескольких типов данных?
Большое спасибо за вашу помощь.