crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

> typeid(*<class>).name(), откуда 15 в имени
ЙаМайскЫйПчОЛ
  опции профиля:
сообщение 27.8.2009, 12:07
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 154
Регистрация: 10.7.2008
Из: СПб
Пользователь №: 232

Спасибо сказали: 7 раз(а)




Репутация:   5  


Доброго времени суток.

вот такой код
#include "parameter.h"
#include <typeinfo>
#include <iostream>
#include <string>
int main(int argc, char ** argv)
{
    Parameter * fpw = new FreqParametrWgt();
    ModeParametrWgt * mpw = new ModeParametrWgt();
    FreqParametrWgt * fpw1 = new FreqParametrWgt();

    std::cout << typeid(*fpw).name() << '\n';
    std::cout << typeid(*fpw1).name() << '\n';
    std::cout << typeid(*mpw).name() << '\n';

    return 0;
}

а вывод вот:
Раскрывающийся текст

15FreqParametrWgt
15FreqParametrWgt
15ModeParametrWgt

вопрос... откуда 15 в имене???
впринципе не критично, но не понятно...
ЗЫ: вывод одинаковый в виндовсе и в линуксе

Сообщение отредактировал ЙаМайскЫйПчОЛ - 27.8.2009, 12:09
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
ЙаМайскЫйПчОЛ
  опции профиля:
сообщение 27.8.2009, 14:50
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 154
Регистрация: 10.7.2008
Из: СПб
Пользователь №: 232

Спасибо сказали: 7 раз(а)




Репутация:   5  


BRE, мне имя фактически не важно, я их буду сравнивать так ( typeid(*fpw) == typeid(*fpw1) )
коректно, логично и практично, главное мне выяснить, чтоб объекты были от одного класса созданы, так что сам имя проверять не буду... просто попался пример в руки решил проверить, получилась херня, вот и заинтересовался
с англицкой вики Caution: the actual text returned by type_info::name() is implementation specific so don't rely on it if attempting to produce portable code. ))) вот всё и ястно (НЕ ЮЗАТЬ)

Сообщение отредактировал ЙаМайскЫйПчОЛ - 27.8.2009, 15:00
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
BRE
  опции профиля:
сообщение 27.8.2009, 15:02
Сообщение #3


Профессионал
*****

Группа: Участник
Сообщений: 1112
Регистрация: 6.3.2009
Из: Ростов-на-Дону
Пользователь №: 591

Спасибо сказали: 264 раз(а)




Репутация:   44  


Цитата(ЙаМайскЫйПчОЛ @ 27.8.2009, 15:50) *
просто попался пример в руки решил проверить, получилась херня, вот и заинтересовался

+1
Ты написал, я тоже заинтересовался, полез проверять... :)
Вот интересно, что на других компиляторах будет выдаваться?
Сам могу только на gcc проверить.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- ЙаМайскЫйПчОЛ   typeid(*<class>).name()   27.8.2009, 12:07
- - Litkevich Yuriy   Первый раз сталкиваюсь с таким ключевым словом - t...   27.8.2009, 12:17
- - ЙаМайскЫйПчОЛ   Я тоже, мне просто на этапе выполнения надо сравни...   27.8.2009, 12:21
- - Litkevich Yuriy   Я вот в аглицкой вики нашёл, там нет "15...   27.8.2009, 12:24
- - BRE   Похоже что 15 это длина имени класса, а вот кто ее...   27.8.2009, 12:50
- - ЙаМайскЫйПчОЛ   Litkevich Yuriy, Совершенно верно... по другим эк...   27.8.2009, 13:19
- - ЙаМайскЫйПчОЛ   BRE, это да совпадает с длинной, но... лано еще по...   27.8.2009, 14:38
|- - BRE   Цитата(ЙаМайскЫйПчОЛ @ 27.8.2009, 15:38) ...   27.8.2009, 14:45
- - ЙаМайскЫйПчОЛ   BRE, мне имя фактически не важно, я их буду сравн...   27.8.2009, 14:50
|- - BRE   Цитата(ЙаМайскЫйПчОЛ @ 27.8.2009, 15:50) ...   27.8.2009, 15:02
- - ЙаМайскЫйПчОЛ   таже %$рня)))) только gcc единым и живу))))   27.8.2009, 15:04
- - Litkevich Yuriy   у GCC есть ключики соответствия стандартам, может ...   27.8.2009, 16:00
- - Tonal   Таки стандарт не определяет что за строку будет во...   28.8.2009, 8:10


Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 29.11.2024, 10:21