Определить тип переменной с++ = typeid c++ = как определить тип переменной в си++ детектируем - определяем string
Primary tabs
для определение типа переменной можно использовать оператор typeid,
который возвращает значение типа type_info
чтобы получить имя типа - следует обратиться к методу(вызвать метод)name() возвращаемого значения/
В примере ниже я определяю тип параметра переданного в конструктор шаблона -
(на месте С - в качестве параметра typeid может быть любой параметр, или имя типа) =
/*пример шаблона на си++*/ template<class C> class Dlist { protected: /*объявляем используемый тип структуры до всех прочих элементов класса - точнее выше использования этого типа элементами класаа - иначе полезу многочисленные ошибки.*/ struct Node; // это шаблонизированная структура /*она также как и шалблон класса параметризируется переданным типом. (см. описание её ниже - вне класса-шаблона)*/ public: int size;// хранит число элементов списка Node* first; // ссылка на первый элемент Node* last; // ссылка на последний добавленный элемент char * dltype; //тип с которым работает двусвязный список Dlist() // конструктор прост - опишем его внутра класса { size=0; first= NULL; last = NULL; /*определим тип переданного параметра*/ dltype = (char * ) typeid(C).name();// запоминаем тип /*инструкция выше для string выдаст вовсе не строковое имя - а целую строку , описывающую структуру типа string, поэтому - если требуется проверить переменную на предмет принадлежности к типу string -используйте строчку немного ниже*/ showmess("You've select type = ",dltype); /*далее проверяем - является ли переменная типом string просто для примера*/ if (typeid(std::string)==typeid(C)) printf ("this is string!"); }
- Log in to post comments
- 32376 reads