Определить тип переменной с++ = 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
- 32750 reads