|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|
Шаблонный класс07.11.2013, 13:39. Показов 1753. Ответов 11
Метки нет (Все метки)
День добрый. Пишу матричный калькулятор на шаблонном классе. Хочу добиться того, чтобы можно было оперировать с матрицами всех численных типов. Для 1 типа класс отлажен и работает хорошо, но, когда переделал под все типы, всё пошло наперекосяк. И первый вопрос в том как произвести действие над объектами разных классов и можно-ли вообще? К примеру обращение матрицы. Ввожу целочисленную, но функция должна возвращать вещественную.
Когда вызываю функцию обращения матрицы для уже созданного объекта типа double, куда будет записан результат, и в качестве параметра передаю объект класса типа int, то происходит несоответствие типов. Подскажите как с этим справиться.
0
|
|
| 07.11.2013, 13:39 | |
|
Ответы с готовыми решениями:
11
Класс Matrix: реализовать шаблонный класс для двумерных массивов Шаблонный класс и класс одномерный массив Переделать класс в шаблонный класс |
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
||
| 07.11.2013, 13:50 | ||
|
Аналогично можно реализовать и другие действия. Для подробности в ответе нужно больше конкретики в вопросе. Например, куски кода
1
|
||
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|||||||||||
| 07.11.2013, 14:04 [ТС] | |||||||||||
Тут конечно можно попробывать пойти по-другому и вызывать функцию обращения из а1 без параметра, а записывать уже в rev. Но как быть, если складываю разные типы? Просто перед созданием объекта определять тип результирующей матрицы через условие? Хочется сделать без этого.
0
|
|||||||||||
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|||||||||||||||||||||
| 07.11.2013, 14:12 | |||||||||||||||||||||
если реверс является методом класса матрица, то использоваться он должен так
иначе делать метод реверса статическим или вообще отдельной функцией, тогда
1
|
|||||||||||||||||||||
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|
| 07.11.2013, 16:56 [ТС] | |
|
С этим пока понял.
Вот еще вопрос. Каким образом можно определить тип вводимого значения? То есть чтобы компьютер сам определял объект какого типа ему создавать.
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 07.11.2013, 17:22 | |
|
Arkaniy, Простите, что? Вместо компьютер надо понимать компилятор? Никак, где-то в программе на этапе компиляции должен быть известен тип данных.
0
|
|
|
576 / 559 / 47
Регистрация: 16.12.2011
Сообщений: 1,389
|
|
| 07.11.2013, 17:54 | |
|
Не понял вопроса. Типы в шаблонах выводятся компилятором на этапе компиляции самостоятельно или с помощью программиста.
Давайте код и по нему вопрос, связанный с типами
0
|
|
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|
| 08.11.2013, 13:15 [ТС] | |
|
ForEveR, Вы правы, имел ввиду именно компилятор.
Сейчас отходя от темы матриц такой вопрос. Допустим, есть возможность создать объект шаблонного класса тремя разными типами(int,double,char). Вопрос в том как сообщить компилятору объект какого типа ему создавать если этот тип явно не определяется? То есть если пользователь начал вводить буквы, то создается char, если целые числа-int, дробные-double. Я думал использовать стринг и после введенной строки проверять каждый символ. Такой подход вменяемый или возможно по-другому?
0
|
|
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
|
| 08.11.2013, 13:24 | |
|
Arkaniy, Только так и можно. Определять придется неким свитчем по типам.
1
|
|
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
||||||
| 08.11.2013, 13:35 [ТС] | ||||||
|
ForEveR, спасибо, с этим понял.
Уже пытался так сделать, но застрял на том, чтобы написать вот так
Так собственно каким образом это реализовать?
0
|
||||||
|
В астрале
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
|
||||||
| 08.11.2013, 13:48 | ||||||
|
Arkaniy, Так не получится очевидно. Написать перегрузки например. Или просто сразу создать тот шаблон который нужно и работать с ним.
1
|
||||||
|
107 / 107 / 21
Регистрация: 29.08.2012
Сообщений: 453
|
|
| 08.11.2013, 13:52 [ТС] | |
|
ForEveR, снова спасибо
![]() Очень помогли, буду пробывать.
0
|
|
| 08.11.2013, 13:52 | |
|
Помогаю со студенческими работами здесь
12
Шаблонный класс Шаблонный класс Шаблонный класс
Шаблонный класс Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Символьное дифференцирование
igorrr37 13.02.2026
/ *
Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет
значение производной при заданном х
Логарифм записывается как: (x-2)log(x^2+2) -. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога
Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
|
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
|