Форум программистов, компьютерный форум, киберфорум
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
Рейтинг: Рейтинг темы: голосов - 15, средняя оценка - 4.67
skelter
0 / 0 / 0
Регистрация: 25.08.2008
Сообщений: 8
#1

Определение нужного типа - C++

25.08.2008, 11:19. Просмотров 1892. Ответов 19
Метки нет (Все метки)

Всем привет
Есть такая небольшая задачка на сообразительность)
Нужно обобщить тип передаваемого аргумента, то есть в зависимости от типа аргумента (unsigned char, signed char, ...) возвращать unsigned long int, signed long int...

Вот примерный код
C++
1
2
3
4
5
6
template<typename T>
BiggerType f(T t)
{
    BiggerType bt = t;
    return bt;
}
Нужно определить BiggerT в зависимости от T. Как это сделать?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.08.2008, 11:19
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Определение нужного типа (C++):

Можно ли как то сделать, чтобы программа сама создавала необходимые ей переменные, нужного типа? - C++
Привет :) Учу язык С++. Добрался до темы &quot;Указатели&quot;. Теперь могу делать так, чтобы пользователь мог сам выбирать размер массива. ...

Определение типа! - C++
У меня такой вопрос. Как можно узнать какой тип вводится? Например так: int a; int b; cout &lt;&lt; &quot;Enter symbol: &quot;; cin &gt;&gt; a; ...

Определение введенного типа - C++
Задался вопросом как сделать так чтоб программа определила вводимый тип. Тоесть программа требует чтоб пользователь ввел число - а после...

Определение типа треугольника - C++
подскажите пожалуйста как узнать в программе тип треугольника? Вот код рабочий.#include &lt;iostream&gt; #include &lt;cmath&gt; using...

Определение типа данных - C++
К примеру вводим число 5, нужно определить что это тип int Если вводим какие-то символы, нужно определить, что это будет string А если...

Определение типа микропроцессора - C++
Дан такой алгоритм: Алгоритм определения типа микропроцессора основывается на различиях в регистрах флагов (РгФ) микропроцессоров (МП)...

19
MAcK
Комбайнёр
1567 / 665 / 21
Регистрация: 27.05.2008
Сообщений: 2,535
25.08.2008, 11:21 #2
нет
0
Vourhey
Почетный модератор
6490 / 2264 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
25.08.2008, 11:35 #3
http://www.cyberforum.ru/cpp-builder...info#post39601
С шаблонами не пробовал. Скажешь, че получится...
MAcK, че это было?
0
MAcK
Комбайнёр
1567 / 665 / 21
Регистрация: 27.05.2008
Сообщений: 2,535
25.08.2008, 11:43 #4
Сорри не дочитал

Добавлено через 5 минут 23 секунды
а вот это не поможет
TypeOf
0
Spo1ler
293 / 53 / 3
Регистрация: 22.05.2008
Сообщений: 788
25.08.2008, 18:43 #5
а перегрузкой функций? или передаются указатели?
0
qwone
9 / 9 / 1
Регистрация: 18.08.2008
Сообщений: 127
25.08.2008, 23:00 #6
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
 
template <class T> 
T BiggerType (T t)
{
    T bt = t;
    return bt;
}
 
void main () {
    int iA=10 ; cout << "int  =" << BiggerType (iA)<<endl; 
  float fA=20.0 ; cout << "float  =" << BiggerType (fA)<<endl;  
 
}
Не знаю что skelter имел ввиду , но универсальную функцию для разных типов надо писать так . Код рабочий
0
skelter
0 / 0 / 0
Регистрация: 25.08.2008
Сообщений: 8
26.08.2008, 11:55  [ТС] #7
qwone,
нет, это совсем не то. Ты написал код, который берет число к.-л. типа и тупо его же возвращает.
А я имел в виду следующее: передается число типа unsigned char (или short) -> возвращается unsigned long int, передается число типа signed char -> возвращается signed long int.

Spo1ler
Слишком много ф-ций писать придется. Нужна одна.

MAcK
ща подумаю...
0
skelter
0 / 0 / 0
Регистрация: 25.08.2008
Сообщений: 8
28.08.2008, 14:59  [ТС] #8
Цитата Сообщение от MAcK Посмотреть сообщение
а вот это не поможет
TypeOf
Нет такой ф-ции в с++.

есть еще варианты?
0
Vourhey
Почетный модератор
6490 / 2264 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
28.08.2008, 15:48 #9
skelter, ты вообще смотришь, че я те пишу?
Код
template<typename T>
void BiggerType(T t)
{
    cout<<typeid(t).name()<<endl;
}
Выведет тебе тип. Работай с этой строкой и все.
0
skelter
0 / 0 / 0
Регистрация: 25.08.2008
Сообщений: 8
28.08.2008, 16:34  [ТС] #10
Vourhey,
При чем тут строка?
Как я при помощи нее смогу сделать так, чтобы функция могла возвращать разные типы?
0
qwone
9 / 9 / 1
Регистрация: 18.08.2008
Сообщений: 127
28.08.2008, 17:49 #11
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#include <iostream.h>
 
template <class T,class T2> 
T2 BiggerType (T t,T2 a)
{
 
    T2 bt = (T2)t;
    return bt;
}
 
void main () {
    
  unsigned char iA='1' ; cout << "(unsigned long int)   =" << BiggerType (iA,(unsigned long int)1)<<endl; 
  float fA=20.5 ; cout << "int  =" << BiggerType (fA,(int)1)<<endl;  
 
}
вобще немного криво но вроде работает .
Если хочешь лучше скачай книгу Шаблоны С++ там все что доктор прописал , если конечно мозг не станет.
Дэвид Вандевурд, Николай М. Джосаттис
Шаблоны C++. Справочник разработчика


http://litzona.com.ua/2008/04/01/sha...abotchika.html
0
skelter
0 / 0 / 0
Регистрация: 25.08.2008
Сообщений: 8
29.08.2008, 15:11  [ТС] #12
qwone, работать то может и работает Но все же хотелось бы, чтоб функция сама определяла, что ей возвращать, а не ты ей это указывал )
0
MAcK
Комбайнёр
1567 / 665 / 21
Регистрация: 27.05.2008
Сообщений: 2,535
29.08.2008, 15:41 #13
Напомни в какой оболочке ты работаешь
0
Vourhey
Почетный модератор
6490 / 2264 / 123
Регистрация: 29.07.2006
Сообщений: 12,534
29.08.2008, 15:46 #14
Цитата Сообщение от skelter Посмотреть сообщение
qwone, работать то может и работает Но все же хотелось бы, чтоб функция сама определяла, что ей возвращать, а не ты ей это указывал )
Да как она определит тебе? Связь-то какая между твоими типами? Ты скажи, на какой основе она должна определять? Чем руководствоваться? Под каждого "определение" не сделаешь. Если это твоя логика, то прописывай ее сам ручками.
0
skelter
0 / 0 / 0
Регистрация: 25.08.2008
Сообщений: 8
29.08.2008, 16:18  [ТС] #15
MAcK, С++ Builder


Vourhey, как это какая связь? Я же сразу написал. Если передается unsigned char, возвращаться должен unsigned int; если signed char, то signed int.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
29.08.2008, 16:18
Привет! Вот еще темы с ответами:

Определение типа окна - C++
Добрый день! А подскажите пжалста, перебираю контролы чужого окна и мне надо выбрать только поля ввода (Edit). По каким критериям их...

Определение типа переменной - C++
#include &lt;iostream&gt; #include &lt;typeinfo&gt; int main() { int t = 10; std::cout &lt;&lt; typeid(t).name() &lt;&lt; std::endl; if...

Определение типа предложения - C++
Всем доброго времени суток. Нужно написать программу для определения типа предложения по цели высказывания. Тоесть если введена точка -...

Определение типа масива - C++
Всем доброго времени суток. Есть программа которая проверяет антирефлективность: int main () { int n; char x; cout&lt;&lt;&quot;Enter...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru