Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для компьютеров > С#

С# Средство разработки на платформе .Net

Ответ
 
Опции темы
Старый 14.10.2013, 23:54   #1
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Математика в шаблонных классах

есть универсальный класс
Class1<AxisType> where AxisType:ValueType
{
    AxisType x,y;
    ....
}
И в некоторых методах производятся мат.операции с полями X и Y

Но компилятор ругается, что нельзя, например, делить AxisType на int (this.x / 2, например)

Как ему объяснить, что для AxisType будут использоваться int,double,float и вообще численные типы?
(Offline)
 
Ответить с цитированием
Старый 15.10.2013, 00:37   #2
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Математика в шаблонных классах

Проблема в том, что не у всех численных типов есть операторы деления. А явно указать нужные численные типы не выйдет.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Reizel (15.10.2013)
Старый 15.10.2013, 00:55   #3
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Математика в шаблонных классах

Сообщение от pax Посмотреть сообщение
Проблема в том, что не у всех численных типов есть операторы деления. А явно указать нужные численные типы не выйдет.
т.е. невозможно создать 2 экземпляра, работающих с разлиычнми типами? уныло(
(Offline)
 
Ответить с цитированием
Старый 15.10.2013, 13:41   #4
Taugeshtu
scientist.alien
 
Аватар для Taugeshtu
 
Регистрация: 12.02.2007
Сообщений: 2,098
Написано 1,030 полезных сообщений
(для 2,593 пользователей)
Ответ: Математика в шаблонных классах

по идее шарповские дженерики при объявлении экземпляра от определённого типа должны же сказать компилятору, что вот у этого экземпляра axisType - int, разве не?
или тебе это для метода нужно? Мне доводилось писать уродливую и мрачную конструкцию с монструозными if-ами с typeof() внутри. Может прокатит.
__________________
Public service announcement: вы можете заблокировать отображение сообщений определённого пользователя, добавив его ник в список игнорируемых.
Tau lab.
We LOVE you. We MADE you.
(Offline)
 
Ответить с цитированием
Старый 15.10.2013, 13:50   #5
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Математика в шаблонных классах

Тут проблема в том, что создавая метод для оператора как параметр указываешь шаблонный тип, а этот шаблонный тип может и не иметь нужного оператора. ValueType это не только int/float/double/long.
__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Старый 15.10.2013, 20:34   #6
Reizel
Задрот
 
Аватар для Reizel
 
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений
(для 863 пользователей)
Ответ: Математика в шаблонных классах

Сообщение от pax Посмотреть сообщение
Тут проблема в том, что создавая метод для оператора как параметр указываешь шаблонный тип, а этот шаблонный тип может и не иметь нужного оператора. ValueType это не только int/float/double/long.
Не заметил посты.
ValueType - это было моё кривоногое предположение, я понимаю, что не все они имеют мат.операторы.
Просто этот тип было бы очень удобно использовать с различными AxisType - а их всего-то 3: int,float да double.
(Offline)
 
Ответить с цитированием
Старый 15.10.2013, 23:25   #7
pax
Unity/C# кодер
 
Аватар для pax
 
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений
(для 5,323 пользователей)
Ответ: Математика в шаблонных классах

Я думаю тебе надо реализовать основной функционал так как задумал, а потом сделать несколько частных случаев и реализовать им операторы (можно скопипастить)
class Class1IntClass1<int>{
операторы

__________________
Blitz3d to Unity Wiki
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 20:54.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com