Форум программистов, компьютерный форум, киберфорум
C/C++: WinAPI
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202

Сделать функцию с неопределенным типом

08.07.2015, 16:11. Показов 2153. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Можно ли сделать функцию с неопределенным типом?
попытка сделать так:
C++
1
template<typename funcType>  funcType func(){}
не к чему не привела, может оператор auto может помочь мне?
Может это не возможно вообще?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
08.07.2015, 16:11
Ответы с готовыми решениями:

Класс с неопределенным типом данных
Алоха, друзья. Попытался я значится сделать класс для обработки разных типов данных. Немного покумекав взял за основу старый добрый вектор....

Как сделать функцию(метод) с типом String?
Мне нужно написать метод который возвращает строку. Какой должен быть прототип в заголовочном файле класса и как должно выглядеть...

Вычислить функцию с неопределенным числом параметров
Требуется вычислить функцию y = max(a, b, c, ... ) где a, b, c, ... - целые числа а y - максимальное из этих чисел. Причем некоторые...

4
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
08.07.2015, 16:35
ДЕСАНТУРА, смотря для чего это нужно и что подразумевается под "функция с неопределенным типом"...
0
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
08.07.2015, 16:54  [ТС]
например я хочу провернуть манипуляции внутри функции отталкиваясь от её типа
Банальный пример, естественно не рабочий:

C++
1
template<typename funcType>  funcType func(){}
C++
1
2
int func(){return 150;}
string func(){return "string";}
0
Диванный эксперт
Эксперт С++
 Аватар для Max Dark
2550 / 2064 / 971
Регистрация: 09.10.2013
Сообщений: 4,793
Записей в блоге: 4
08.07.2015, 18:27
в C++ функции не могут иметь одинаковые имена и одновременно разные типы возвращаемого значения
для шаблонов имя типа входит в имя функции(указывается в угловых скобках)
при вызове тип можно пропускать, если есть возможность вывести его из типов параметров
в С++14 можно использовать auto в качестве типа результата

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <string>
#include <iostream>
#include <typeinfo>
 
template<typename T>
T func() { return T(); }
 
template<>
std::string func<std::string>() { return "Yo!"; }
template<>
int func<int>() { return 42; }
 
template<typename T>
auto mk_func(T value) {
    return [value]() -> T{ return value; };
}
 
int main() {
    auto xx = mk_func("hello");
    std::cout << xx() << std::endl;
    // std::cout << func() << std::endl; // << error: компилятор не знает такой функции
    std::cout << func<int>() << std::endl; // ok
    std::cout << func<std::string>() << std::endl; // ok
}
не всякий компилятор переварит такое
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
c:\devel\sources>g++ -std=c++14 temp_func.cxx -o tfunc
 
c:\devel\sources>tfunc
hello
42
Yo!
 
c:\devel\sources>cl /nologo temp_func.cxx
temp_func.cxx
C:\devel\tools\vs\VC\INCLUDE\xlocale(337) : warning C4530: C++ exception handler
 used, but unwind semantics are not enabled. Specify /EHsc
temp_func.cxx(16) : error C3551: expected a trailing return type
temp_func.cxx(20) : error C2064: term does not evaluate to a function taking 0 a
rguments
 
c:\devel\sources>g++ -std=c++11 temp_func.cxx -o tfunc
temp_func.cxx:14:21: error: 'mk_func' function uses 'auto' type specifier withou
t trailing return type
 auto mk_func(T value) {
                     ^
temp_func.cxx:14:21: note: deduced return type only available with -std=c++1y or
 -std=gnu++1y
temp_func.cxx: In function 'int main()':
temp_func.cxx:19:30: error: invalid use of 'auto'
     auto xx = mk_func("hello");
                              ^

Не по теме:

это все довольно интересно, но у меня не хватает фантазии придумать применение

1
6 / 6 / 5
Регистрация: 25.02.2015
Сообщений: 202
08.07.2015, 21:07  [ТС]
Цитата Сообщение от Cra3y Посмотреть сообщение
это все довольно интересно, но у меня не хватает фантазии придумать применение
У самого мозг закипел на этом деле, но применение я все таки нашел, кстати, доработав твой код я получил еще и использование неограниченных аргументов + эти аргументы тоже имеют неопределенный тип, спасибо за вариант кода
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
08.07.2015, 21:07
Помогаю со студенческими работами здесь

Вызвать функцию из dll с неопределённым числом параметров
Нужно вызвать из dll функцию с неопределённым числом параметров. пока что работаю с таким вызовом char res; char (*dll) (char* ...);...

Создать функцию для высчитывание гипотенузы с типом double
Создать функцию hypetunuse для высчитывание гипотенузы с типом double. Где два катета типа double водятся с клавиатуры. #include...

Реализовать функцию, которая принимает аргумент с любым типом данных
Все никак не могу понять, как сделать так, что-бы функция просто принимала переменную и выводила: #include &lt;iostream&gt; ...

Как написать функцию c типом long double возвращаюшую тип shot?
Мне бы какой нибудь тривиальный пример в Си. Спасибо:)

В чем разница между типом функции и типом возвращаемого значения?
Читаю статью https:// code-live. ru/post/cpp-functions/ (ссылку изменил дабы не делать рекламу) Там написано - Любая функция...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 30.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru