Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.60/15: Рейтинг темы: голосов - 15, средняя оценка - 4.60
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4

Как вернуть тип переменной и любого другого элемента программы?

06.05.2019, 22:54. Показов 4147. Ответов 42
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть такой примитивный код.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include "stdafx.h"//должна быть в начале
#include <conio.h>
#include <iostream>
 
using std::cout;
using std::endl;
using std::cin;
 
template<typename T> void Fun(T a[]) //здесь я использую шаблон чтобы программа сама определила какой тип
 {}                                                     //массива будет передан в функцию
 
int _tmain(int argc, _TCHAR* argv[])
{
    double mas[6]={1,2,3,4,5,6},//
    Fun(reinterpret_cast <double*>(mas));// здесь вызывается функция и если массив не одномерный как в моём случае
                                                                 //требуется запись reinterpret_cast и указание типа массива с которым будем 
                                                                 //работать функция
    _getch();
    return 0;
}
Значит вопрос в следующем: как сделать так чтобы в этом месте reinterpret_cast <double*> можно было использовать механизм который определит тип массива так в разработке предполагается работа со всеми типами массивов которые существуют в природе начиная от int и заканчивая string? Нужно создать универсальный модуль определяющий тип массива. Может кто-нибудь помочь решить эту головоломку?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
06.05.2019, 22:54
Ответы с готовыми решениями:

Как взять значение переменной из другой формы или другого элемента?
Как взять значение переменной из другой формы или другого элемента?

Присвоение переменной значения элемента массива из другого класса
Здравствуйте. В классе Player имеется массив public static int stats = { 40, 100, 15 }; Как присвоить переменной int в другом классе...

Как определить тип переменной, ссылающейся на определённый класс? Нужен именно тип, а не ссылка на обьект!
interface HowDefineMyType { void info(); } class A implements HowDefineMyType { public int x;

42
144 / 28 / 4
Регистрация: 06.05.2019
Сообщений: 1,839
Записей в блоге: 4
11.06.2019, 00:53  [ТС]
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от zayats80888 Посмотреть сообщение
template<class T> void Fun(T a[], size_t args...)
{}
int main()
{
* * int *mas1[2][2] = { {1,4},{2,6} };
* * int mas2[2][2][2];
Fun(static_cast<int*>(*mas1), 2, 2);
* * Fun(static_cast<int*>(**mas2), 2, 2, 2);
}
У меня к вам вопрос вот вы записали эти строки
C++
1
2
Fun(static_cast<int*>(*mas1), 2, 2);
Fun(static_cast<int*>(**mas2), 2, 2, 2);
В первой строчке вызывается функция "Fun" она имеет 3 аргумента: 1ый это массив static_cast<int*>(*mas1); 2 и 3ий аргументы это количество строк и столбцов в данном случае 2 на 2.

Во второй строчке тоже вызывается функция "Fun" она имеет уже 4 аргумента: 1ый это массив static_cast<int*>(**mas2); 2 и 3 и 4ый это размеренности.
Как оно так получается что сначала было 3 аргумента а потом стало 4ре, чем обеспечен данный нюанс?
0
 Аватар для zayats80888
6354 / 3525 / 1428
Регистрация: 07.02.2019
Сообщений: 9,008
11.06.2019, 01:31
Да я там хрень написал, параметров на один больше передать нужно(количество аргументов в начале) и распаковать используя va_list

Добавлено через 3 минуты
вот пример https://en.cppreference.com/w/... dic/va_arg
0
зомбяк
 Аватар для TRam_
1585 / 1219 / 345
Регистрация: 14.05.2017
Сообщений: 3,940
11.06.2019, 03:28
Nexi99, а к чему тут вообще статические массивы? Возьми std::vector<std::vector<std::vector<.... std::vector<T>... > > > и разматывай их с помощью вариативных шаблонов - https://en.cppreference.com/w/... meter_pack

А то возишься с массивами константного размера - никакой универсальности.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.06.2019, 03:28

Как спозиционировать блок относительно любого другого блока
Как абсолютно спозиционировать блока А относительно блока Б, если блок Б является не родителем, а блоком который находится где-то в другом...

Как в функции вернуть тип
Как сделать что-то такое, только чтобы код был валидным? :) if (data.name == attribute.Name) { data.val =...

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

Получить тип переменной и задать её переменной типа тип
то есть int A = 213213 Type B = A.GetType() - ну надо что-то вроде этого но для Type b = typeof(a.Max(p =&gt;...

Как изменить текст элемента, который находится внутри другого элемента?
есть элемент span который находиться внутри элемента р, как сделать так чтобы к примеру вместо &lt;p id=&quot;p&quot;&gt;123&lt;span...


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

Или воспользуйтесь поиском по форуму:
43
Ответ Создать тему
Новые блоги и статьи
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
Как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Ответ от Джемени ИИ.
zorxor 08.11.2026
Джемени, как только я захожу к себе в свою комнату я сразу же с себя снимаю свои трусы. Многие люди, возвращаясь домой, сразу переодеваются в максимально свободную одежду или вовсе предпочитают. . .
Паттерн очереди действий/команд (Action / Command Queue). Система очереди действий и кат-сцен с SDL3 Callbacks, cglm и OpenGL
8Observer8 07.11.2026
Содержание блога | English Version Руководство для начинающих по реализации паттерна очереди действий/ команд (Action / Command Queue) на C++ (C++20) с использованием официального SDL3 Callbacks. . .
Проверка полного ФИО в типовом справочнике
Maks 07.11.2026
Решение реализовано в конфигурации КА2, на примере справочника "КонтактныеЛицаПартнеров". Задача: Запрет инициалов. Не допускаеть использование сокращений вида "И. И. ", "И. И. ", "И И" и. . .
Про "Windows must die!"
kumehtar 04.11.2026
Знаете, чет накатило. . . . Когда-то это было почти боевым кличем: мол, нормальный человек сидит на DOS, OS/ 2 или Linux, а вот это вот - Must Die. А теперь человек произносит «мастдай» с усмешкой - и. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru