|
С# Средство разработки на платформе .Net |
14.10.2013, 23:54
|
#1
|
Задрот
Регистрация: 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
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Математика в шаблонных классах
Проблема в том, что не у всех численных типов есть операторы деления. А явно указать нужные численные типы не выйдет.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
15.10.2013, 00:55
|
#3
|
Задрот
Регистрация: 24.07.2009
Адрес: Ивановская область, г. Кинешма
Сообщений: 1,574
Написано 407 полезных сообщений (для 863 пользователей)
|
Ответ: Математика в шаблонных классах
Сообщение от pax
Проблема в том, что не у всех численных типов есть операторы деления. А явно указать нужные численные типы не выйдет.
|
т.е. невозможно создать 2 экземпляра, работающих с разлиычнми типами? уныло(
|
(Offline)
|
|
15.10.2013, 13:41
|
#4
|
scientist.alien
Регистрация: 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
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Математика в шаблонных классах
Тут проблема в том, что создавая метод для оператора как параметр указываешь шаблонный тип, а этот шаблонный тип может и не иметь нужного оператора. ValueType это не только int/float/double/long.
|
(Offline)
|
|
15.10.2013, 20:34
|
#6
|
Задрот
Регистрация: 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
|
Unity/C# кодер
Регистрация: 03.10.2005
Адрес: Россия, Рязань
Сообщений: 7,568
Написано 3,006 полезных сообщений (для 5,323 пользователей)
|
Ответ: Математика в шаблонных классах
Я думаю тебе надо реализовать основной функционал так как задумал, а потом сделать несколько частных случаев и реализовать им операторы (можно скопипастить)
class Class1Int: Class1<int>{ операторы }
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 12:57.
|