forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   Тупые вопросы (http://forum.boolean.name/showthread.php?t=7398)

IGR 05.12.2008 21:30

Ответ: Тупые вопросы
 
ясно !! спасибо !!
хотя ето все-го лиш лабораторная !!

у меня немного другой вопрос:
вот есть шаблон класса !! передаем переменный-значеня разного типа !! как узнать какого типа переменная ??
передали допустим 4.567 и в результате должные получить ответ от "искуственного моска" что это флоат !!
Блин, нас этого и близко не учили, а требуют !!

jimon 05.12.2008 21:41

Ответ: Тупые вопросы
 
IGR
шаблон только знает "имя" класса - то которое задаешь в шаблонном описании, обычно T используют
можно приводить типизацию к T или к другому классу который описан как шаблон в нашем шаблоне

зачем тебе конкретно знать что это float - я не имею представления

HolyDel 05.12.2008 21:49

Ответ: Тупые вопросы
 
а почему float, а не, например, double?

IGR 05.12.2008 22:28

Ответ: Тупые вопросы
 
Цитата:

а почему float, а не, например, double?
хз, это я к примеру !!

Цитата:

шаблон только знает "имя" класса
jimon, может я ошибаюсь, ну вот смотри:
когда в функции-шаблоне я плюсую 2 переменных, то програма врядли станет плюсовать int с char т.е. компилятор видит разницу в этих типах переменных !! мне нужно что бы он увидел тип переменной и сообщил об этом пользователю !!

jimon 05.12.2008 22:42

Ответ: Тупые вопросы
 
IGR
ну дык в чём проблемма ? в ХИДЕРЕ ОПРЕДЕЛИ метод класса для определённого типа в шаблоне (определять после шаблона надо)
тоесть ты можешь определить одну функцию по разному для разных типов, к примеру char и для int
для int ты определяешь просто a1+a2, а для char используешь atoi и тд

тут есть пример даже где шаблонный класс определяется для заданного типа

IGR 05.12.2008 22:58

Ответ: Тупые вопросы
 
ну ето немоне то !! :)

по идее у меня должна быть функция WhatIsClass(T x) !!
Потом:
int int_value=34;
char char_string="Skoro_Sessia";
doublу double_value="32654";

Потом когда мы передаем любую из этих переменных у функцию:
WhatIsClass(char_string);
Пользователю должно, допустим высветится на екране:
Char variable !!

Можно ли такое ?? Я тут совсем запутался !! :SOS:

jimon 05.12.2008 23:12

Ответ: Тупые вопросы
 
IGR
ну сделай это как я сказал
а функции такой нету, в принципе в памяти то любая переменная это просто указатель на место где она хранится, про размер или тип ничего не говорится

IGR 05.12.2008 23:19

Ответ: Тупые вопросы
 
jimon, окай !! попробую так !!
Вот еще книжку по ООП докачаю, может сам че придумаю !!
Спасибо !! :beer:

HolyDel 09.12.2008 16:55

Ответ: Тупые вопросы
 
Код:

WhatIsClass(std::string val)
{
cout<<"it's string"<<endl;
}

WhatIsClass(float val)
{
cout<<"it's float"<<endl;
}

WhatIsClass(double val)
{
cout<<"double"<<endl;
}


jimon 09.12.2008 18:50

Ответ: Тупые вопросы
 
HolyDel
тогда уж

Код:

#define __REGISTER_TYPE(_type) char * WhatIsClass( const _type & val ){return #_type;}

__REGISTER_TYPE(double)
__REGISTER_TYPE(int)

...

double lol = 0;
std::cout << WhatIsClass(lol) << "\n";


HolyDel 09.12.2008 19:19

Ответ: Тупые вопросы
 
jimon, можно и проще:
Код:

#include <typeinfo>
#include <iostream>

int main()
{
  std::cout<<typeid(0.11f).name()<<std::endl;
  std::cout<<typeid(0.1).name()<<std::endl;
  std::cout<<typeid(1).name()<<std::endl;
  std::cout<<typeid("BAZOOOKAAAAA!!!!").name()<<std::endl;
}


IGR 10.12.2008 16:47

Ответ: Тупые вопросы
 
Цитата:

#include <typeinfo>
#include <iostream>

int main()
{
std::cout<<typeid(0.11f).name()<<std::endl;
std::cout<<typeid(0.1).name()<<std::endl;
std::cout<<typeid(1).name()<<std::endl;
std::cout<<typeid("BAZOOOKAAAAA!!!!").name()<<std: :endl;
}
вот это то что нужно !!
вот мне это часа 3 назад на лекции прочитали !! :-)
и тут маленький вопрос:
что такое std и зачем оно ??

jimon 10.12.2008 17:04

Ответ: Тупые вопросы
 
IGR
std это пространство имен STL

FDsagizi 10.12.2008 18:29

Ответ: Тупые вопросы
 
Цитата:

Сообщение от IGR (Сообщение 91975)
что такое std и зачем оно ??

Прогая на си два плюса и не зная что такое стд. Это примерно тоже самое что ездить на машине и не знать что такое радиатор:-)

newman 10.12.2008 18:44

Ответ: Тупые вопросы
 
Цитата:

Сообщение от FDsagizi (Сообщение 91979)
Прогая на си два плюса и не зная что такое стд. Это примерно тоже самое что ездить на машине и не знать что такое радиатор:-)

Немного неправильный пример. Ездить на машине, это тоже самое что юзать готовый продукт. Тут правильнее будет такой пример, что ездить на машине и не знать правила, или работать на СТО и не знать что такое радиатор :).

А про std во всех книжках для новичков пишут :)


Часовой пояс GMT +4, время: 20:58.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot