typeid

    10热度

    4回答

    C++中的typeid运算符返回类别为std::type_info的对象,该对象可以产生其文本名称。但是,我只是想为任何多态类获取唯一的数字标识符。 (在一个程序中运行的范围独特的 - 而不是运行之间不一定) 在实践中,我可能只是取消引用指针和阅读vptr的内容 - 但这既不优雅,也不便于携带。我更喜欢便携式的方式。 我可以使用typeid操作符以某种方式为类设置一个“安全”的数字标识符吗?例如,

    0热度

    3回答

    在构造函数的定义print语句不打印它的typeid的,没有构造函数调用正确的主?我知道我在这里错过了一些观点,请指出。 #include <iostream> #include <typeinfo> template <typename T> class List { public: template <typename T2> List (List<T2> con

    8热度

    2回答

    在生产代码中使用typeid通常被认为是不好的做法吗?另外,我注意到typeid返回type_info,其中包括一些元数据(如具有类型名称的字符串);有没有办法停用这个?

    4热度

    1回答

    在C++/CLI代码中,我需要检查类型是否是特定的泛型类型。在C#这将是: public static class type_helper { public static bool is_dict(Type t) { return t.IsGenericType && t.GetGenericTypeDefinition() == typeof(IDiction

    2热度

    2回答

    我试图创建一个可以附加到我的对象的可用元数据的容器。我可以保证在我的课程中最多只能有一个对象,但是不能附加不同类型的对象。例如,我无法将wordInfo的两个实例附加到对象,但可以同时将wordInfo和phraseInfo类的实例附加到对象。这是我迄今为止完成的工作。 class object { std::map <std::type_info, object*> mMetaDat

    4热度

    3回答

    如果我打电话typeid和检索返回type_info地址:什么是对象的生命周期由typeid返回多久将指针指向的对象仍然有效 const type_info* info = &(typeid(Something)); ?

    2热度

    1回答

    我是微优化code for identifying object types。我假设我可以使用用于检查以下在同一模块中实例化的两个对象是否具有相同的类型: SomeCommonBase& first = ...; SomeCommonBase& second = ...; const type_info& firstInfo = typeid(first); const type_info&

    31热度

    4回答

    如何创建一个递归可变参数模板来打印出参数包的内容? 我这个尝试,但它无法编译: template <typename First, typename ...Args> std::string type_name() { return std::string(typeid(First).name()) + " " + type_name<Args...>(); } std::stri

    4热度

    1回答

    例如,如果我在做REPL scala> val a = Set(1,2,3) a: scala.collection.immutable.Set[Int] = Set(1, 2, 3) ,我想看到的最精致型的“一”,才能知道它是否真的是一个HashSet的。在C++中,typeid(a).name()会做到这一点。什么是Scala等价物?

    9热度

    1回答

    我想在编译时根据派生类型为类生成一个哈希。今天我产生它想: template<class Type> class TypeBase { public: static const unsigned s_kID; }; template<class Type> const unsigned TypeBase<Type>::s_kID = hash(typeid(Type));