forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   С# (http://forum.boolean.name/forumdisplay.php?f=128)
-   -   Математика в шаблонных классах (http://forum.boolean.name/showthread.php?t=18626)

Reizel 14.10.2013 23:54

Математика в шаблонных классах
 
есть универсальный класс
Код:

Class1<AxisType> where AxisType:ValueType
{
    AxisType x,y;
    ....
}

И в некоторых методах производятся мат.операции с полями X и Y

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

Как ему объяснить, что для AxisType будут использоваться int,double,float и вообще численные типы?

pax 15.10.2013 00:37

Ответ: Математика в шаблонных классах
 
Проблема в том, что не у всех численных типов есть операторы деления. А явно указать нужные численные типы не выйдет.

Reizel 15.10.2013 00:55

Ответ: Математика в шаблонных классах
 
Цитата:

Сообщение от pax (Сообщение 268793)
Проблема в том, что не у всех численных типов есть операторы деления. А явно указать нужные численные типы не выйдет.

т.е. невозможно создать 2 экземпляра, работающих с разлиычнми типами? уныло(

Taugeshtu 15.10.2013 13:41

Ответ: Математика в шаблонных классах
 
по идее шарповские дженерики при объявлении экземпляра от определённого типа должны же сказать компилятору, что вот у этого экземпляра axisType - int, разве не?
или тебе это для метода нужно? Мне доводилось писать уродливую и мрачную конструкцию с монструозными if-ами с typeof() внутри. Может прокатит.

pax 15.10.2013 13:50

Ответ: Математика в шаблонных классах
 
Тут проблема в том, что создавая метод для оператора как параметр указываешь шаблонный тип, а этот шаблонный тип может и не иметь нужного оператора. ValueType это не только int/float/double/long.

Reizel 15.10.2013 20:34

Ответ: Математика в шаблонных классах
 
Цитата:

Сообщение от pax (Сообщение 268808)
Тут проблема в том, что создавая метод для оператора как параметр указываешь шаблонный тип, а этот шаблонный тип может и не иметь нужного оператора. ValueType это не только int/float/double/long.

Не заметил посты.
ValueType - это было моё кривоногое предположение, я понимаю, что не все они имеют мат.операторы.
Просто этот тип было бы очень удобно использовать с различными AxisType - а их всего-то 3: int,float да double.

pax 15.10.2013 23:25

Ответ: Математика в шаблонных классах
 
Я думаю тебе надо реализовать основной функционал так как задумал, а потом сделать несколько частных случаев и реализовать им операторы (можно скопипастить)
PHP код:

class Class1IntClass1<int>{
операторы




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

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot