Форум программистов, компьютерный форум, киберфорум
C++
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 14
1

Как не писать один и тот же код, для функции, принимающей разные типы данных в качестве аргумента

03.07.2014, 12:50. Показов 2037. Ответов 3
Метки нет (Все метки)

Проблема такая: есть некая функция. Внутри нее происходят одни и теже вычисления, вне зависимости от типа входных данных.
C++ (Qt)
1
void my_func(void**)
Вопрос: можно ли, передавая в нее данные разных типов: double, unsigned char , float , не писать несколько раз один и тот же код для разного типа данных ( внутри функции или перегружая ее) ; и если можно, то как?
я делал так (но жопой чую, что это самый кривой вариант):
C++ (Qt)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void my_func(void** arr)
{
   float** arr_fl;
   double** arr_d;
   unsigned char** arr_uch;
 
   switch(flag)
   {
        case 1:
       {
           arr_fl = (float**)arr;
           (далее идут вычисления, одни и теже для всех типов)
       }
       case 2:
       {
           arr_d = (double**)arr;
           (далее идут вычисления, одни и теже для всех типов)
       }
   }
}
__________________
Помощь в написании контрольных, курсовых и дипломных работ здесь
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
03.07.2014, 12:50
Ответы с готовыми решениями:

Объяснить назначение функции length(), принимающей в качестве аргумента std::vector
Добрый день! Подскажите, пожалуйста. Есть такая переменная: vector<float> Yvect C тремя...

Как передать столбец данных из DataTable в качестве аргумента функции
Добрый день. 1. Есть три таблицы DataTable две с входными данными и одна с результатами расчета:...

Один и тот же запрос в функции и отдельно выводят разные результаты
Здравствуйте!! Подскажите, пожалуйста, в чем может быть проблема Пишу на MySql Есть таблица:...

Как не писать один и тот же фрагмент кода?
Есть несколько форм, и на них всех используется один и тот же код, что нужно сделать чтоб просто...

3
Native x86
Эксперт Hardware
5088 / 2951 / 855
Регистрация: 13.02.2013
Сообщений: 9,453
03.07.2014, 13:01 2
Лучший ответ Сообщение было отмечено Uasya как решение

Решение

Шаблон вам поможет.
1
143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
03.07.2014, 13:51 3
Если можно, то я предложу свой кривой вариант:
C++
1
2
3
4
5
6
void my_func(char *buf, int type)
{
switch(type)
{
}
}
Передаём строку, предварительно сконвертировав изначальное значение, в зависимости от типа значения второй параметр указывает на то как конвертировать строку обратно (в float, int или что то ещё).

Вариант 2: делать через Union, и передавать его (естественно передавать надо будет структуру в которой членом будет Union). И в зависимости от того какая переменная в Union структуре, та и будет обрабатываться.
1
0 / 0 / 0
Регистрация: 26.06.2014
Сообщений: 14
03.07.2014, 14:55  [ТС] 4
спасибо большое, все получилось! я про шаблоны слышать - слышал, но зачем они - не интересовался
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.07.2014, 14:55

Как на разные кнопки назначить один и тот же обработчик событий?
PyQt Доброго времени суток, господа Как можно на разные кнопки назначить один и тот же...

Как привести (состыковать) разные типы из разных классов (исп в качестве выходного параметра в методе)
Вопрос состоит в том как максимально просто заставить работать такой неправильный код. Самое...

Шаблон функции и разные типы данных
Как определить переменная какого типа была передана в шаблон функцию ? Например: int или wchar_t*

Как будет выглядеть заголовок функции, принимающей в качестве входных параметров два целых числа и возвращающей число с плавающей запятой двойной точн
1. int a, int b: f ( double ) 2. double f ( int a, int b ) 3. int f ( double a, int b ) 4. f...

Передача массива данных пользовательского типа в качестве аргумента функции
Добрый день! массив ParamArray всегда имеет тип данных Variant В функцию передаются пользователем...

Создание шаблона bool-функции, принимающей в качестве параметра экземпляр класса
Добрый день. Никак не получается осилить) Суть: есть классы, у которых есть поле str - массив...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru