Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 17.10.2008, 19:19   #1
Игорь007
Пользователь Подтвердите свой е-майл
 
Аватар для Игорь007
 
Регистрация: 30.05.2008
Сообщений: 96
По умолчанию Определение типа переменной

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

Последний раз редактировалось Игорь007; 17.10.2008 в 19:22.
Игорь007 вне форума Ответить с цитированием
Старый 18.10.2008, 02:08   #2
alexinspir
Новичок
Джуниор
 
Аватар для alexinspir
 
Регистрация: 26.08.2008
Сообщений: 1,010
По умолчанию

не уверен что понял тебя правильно, но:
а перегрузка функций?
ромик0: Cколько получают здешние модераторы?
pu4koff: У модераторов сдельная оплата труда. Выдал предупреждение - плюс к премии. Выдал бан - лучший модератор месяца со всеми вытекающими.
alexinspir вне форума Ответить с цитированием
Старый 18.10.2008, 06:36   #3
Игорь007
Пользователь Подтвердите свой е-майл
 
Аватар для Игорь007
 
Регистрация: 30.05.2008
Сообщений: 96
По умолчанию

Цитата:
не уверен что понял тебя правильно, но:
а перегрузка функций?
Нет. Наверное не получиться перегрузить. В моей реализации, так точно.

Как реализовать то, что я выше описал, я как нибудь смогу. Интереснее узнать существует ли такая функция или что-то вроде этого.
Игорь007 вне форума Ответить с цитированием
Старый 09.01.2009, 04:37   #4
Doc
Пользователь
 
Аватар для Doc
 
Регистрация: 09.01.2009
Сообщений: 15
По умолчанию

например int от float можно отличить так
Код:
template<class Type>
massiv<Type>::massiv(int s) 
{
	Type m=0.1;
	srand(time(NULL));
	size = s;
	arr = (Type*)malloc(size*sizeof(Type));
	if(m == 0) {
		//код для int
	}
	if(m>0) {
		//код для float
	}
}
во время исполнения конструктора, если параметром шаблона будет int,
то m инициализируется как 0, а если float, то как 0.1.

int и float можно отличить от double с помощью sizeof()


Модератор: тег CODE

Последний раз редактировалось MaTBeu; 09.01.2009 в 17:04.
Doc вне форума Ответить с цитированием
Старый 09.01.2009, 10:30   #5
Игорь007
Пользователь Подтвердите свой е-майл
 
Аватар для Игорь007
 
Регистрация: 30.05.2008
Сообщений: 96
По умолчанию

Цитата:
int и float можно отличить от double с помощью sizeof()
Лучше всего юзать typeid()
Игорь007 вне форума Ответить с цитированием
Старый 09.01.2009, 18:47   #6
v_root_mne_logi
 
Регистрация: 08.01.2009
Сообщений: 9
По умолчанию

Цитата:
Сообщение от Doc Посмотреть сообщение
Код:
Type m=0.1;
...
Код:
if(m == 0) {
		//код для int
	}
...
Код:
if(m>0) {
		//код для float
	}
Прикольное решение +1
Правда меня терзают смутные сомнения что компилятор не обругает...
Мне кажется, что минимум warning обеспечен.
v_root_mne_logi вне форума Ответить с цитированием
Старый 10.01.2009, 09:59   #7
Doc
Пользователь
 
Аватар для Doc
 
Регистрация: 09.01.2009
Сообщений: 15
По умолчанию

компилятор MS VC++ 2008 нормально проглотил эту конструкцию
Doc вне форума Ответить с цитированием
Старый 10.01.2009, 13:01   #8
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

В С++ есть такая возможность - когда пишешь шаблон. Написал общую реализацию, потом пишешь реализации этой шаблонной функции для отдельных типов. Вот вы написали для общего типа Type. Теперь пишите тоже самое, только вместо Type подставьте int или float или что там еще.

Вот тут посмотрите. Там 16.2 пункт.
MaTBeu вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Определение типа видеокарты (TASM) -danger- Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 8 24.03.2011 06:13
Изменение переменной yura-cat Помощь студентам 7 20.09.2008 17:42
Определение типа курсора в сторонних приложениях. lazutov Win Api 1 11.09.2008 20:59
присвоить переменной целого типа значение поля key полученное в результате выполнения SQL запроса Worms БД в Delphi 5 10.01.2008 21:07
Работа с файлами (создание, удаление, открытие, связываение с переменной, очищение памяти переменной) Arkuz Общие вопросы Delphi 12 25.09.2007 20:47