Как использовать C++ Filter
Возможный дубликат:
Могу ли я отключить имена RTTI GCC?
Я начал использовать code::blocks с gcc (просто не мог больше выдерживать VS2010), и хотя я доволен всем, одно, что определенно не так хорошо сделано в gcc, это то, что когда я хочу использовать typeid I ' я получаю не точное имя типа, но некоторые символические обозначения (почему? почему они не могут идти с именами типов?) в любом случае, я слышал, что C++ Filt может помочь с такого рода проблемами, но я не знаю, как использовать его (или установить - нужно ли его скачивать?).
1 ответ
typeid
возвращает ссылку на std::type_info
экземпляр, поэтому я предполагаю, что вы используете его name()
метод.
Чтобы ответить на ваш вопрос о том, почему вы не получаете "точные" имена типов: name()
возвращает строку, определенную реализацией, поэтому вы не должны полагаться на то, что она имеет какое-либо значение. В частности, он даже не должен быть уникальным для данного типа.
Вы должны сравнить std::type_info
объекты, непосредственно использующие ==
, !=
или же .before()
возможно, в сочетании с .hash_code()
если у вас есть поддержка C++11.