当前位置 : 主页 > 大数据 > 区块链 >

使用typeid.name获取auto变量的类型

来源:互联网 收集:自由互联 发布时间:2021-06-22
1. 引入头文件#include typeinfo 2. 调用typeid(auto_type_var).name()获取名称 其中typeid操作符得到type_info对象,创建type_info对象的唯一方法是使用typeid操作符 示例 // gettype.c #include iostream#include ty

1. 引入头文件#include <typeinfo>

2. 调用typeid(auto_type_var).name()获取名称

其中typeid操作符得到type_info对象,创建type_info对象的唯一方法是使用typeid操作符

示例

// gettype.c
#include <iostream>
#include <typeinfo>

using namespace std;

int main()
{
        auto i=100;
        cout << typeid(i).name() << endl;
        return 0;
}

编译 g++ -std=c++11 gettype.c -o gettype

输出



本人在protobuf生成的嵌套类型中由于没有g++ 加上-std=c++11参数导致编译报错,后来通过以上方法找到了auto的实际类型,再后来发现   加上-std=c++11参数就能仍旧使用auto关键词类型推断了


proto文件用到的是以下文档的例子

addressbook.proto

Protobuf学习 - 入门

https://www.cnblogs.com/autyinjing/p/6495103.html


最后一行输出auto变量的类型,容易推断出为 addressbook::Person::PhoneNumber*

注: name函数为type_info对象所表示的类型的名字返回C风格字符串。给定类型所用的值取决于编译器,具体来说无须与程序中使用的类型名字匹配。对name返回值的唯一保证是,它为每个类型返回唯一的字符串。【摘自C++ Primer中文版652页】

既 auto help_pn = help_pi.mutable_phone(i);

等价于
addressbook::Person::PhoneNumber* help_pn = help_pi.mutable_phone(i);
网友评论