草庐IT

typeInfo

全部标签

c++ - 带有动态加载库的 undefined symbol "typeinfo"

我正在尝试在动态加载的Linux上使用gcc4.6构建一个共享库。正如网络上的许多文章以及之前的问题所述,我在库中提供了c风格的工厂方法来创建和销毁对象。代码-最小形式-如下所示:基础.h:classbase{public:base();virtual~base();virtualintvalue()=0;};基础.cpp:#include"base.h"base::base(){}base::~base(){}主要.cpp:#include"base.h"#include#includeintmain(){void*handle=dlopen("liblib.so",RTLD_NOW

c++ - 类型名称分解问题

我正在创建一个模板类,将类型转换为描述它的字符串,例如typeinfo::name()返回字符串"int(*)()"(直到空格)。最初我有大量特殊情况需要解决typeid(...).name()的事实剥离引用限定符和顶级cv限定符,但后来我记得将类型作为模板参数传递将保留这些。因此,使用ABIheader,我得到了如下结果:#include#include#include#includeusingnamespacestd;stringdemangle(constchar*mangledName){intstatus;char*result=abi::__cxa_demangle(man

c++ - 不完整的类型和 initializer_list

我正在尝试为一些元数据建模以序列化/反序列化C++对象。这里有一些东西可以捕捉到我需要的细节;它使用GCC5.2(g++sample.cpp-std=c++14)和Clang3.6(clang++sample.cpp-std=c++14)编译。我的问题是关于示例中的structTypeInfo。它包含一个std::initializer_list本身。这符合标准吗?#include#includeenumclassTypeCode:std::uint8_t{BOOLEAN,INT,OBJECT,STRING,SENTINEL};structTypeInfo{TypeCodetypeCo

c++ - C++11 是否为 std::type_info 提供散列函数?

我仍在为我的One-Of-A-TypeContainerProblem寻找一个好的解决方案--经过深思熟虑,我认为能够只使用像std::map这样的东西会很好.不幸的是,std::type_info没有定义operator,我认为它定义一个是不合理的。然而,为它定义一个散列函数似乎是合理的,因为你可以简单地使用std::type_info的单例地址。对象作为合理的“哈希”。因此,您可以输入std::type_info进入std::unordered_map作为关键。C++11有提供这样的哈希函数吗?将使用std::type_info的内存地址单例是一个糟糕的哈希策略?

c++ - 'TypeInfo<char>(char * )' isn' t defined but worked pre-C++11; what changed, and how can I fix the error?

我正在尝试从CrysisWarsSDK的源代码构建DLL,并且过去在以前版本的VisualStudio(即2005、2008和2010)上成功地完成了此操作。我的具体问题是:Error4errorLNK2019:unresolvedexternalsymbol"structCTypeInfoconst&__cdeclTypeInfo(char*)"(??$TypeInfo@D@@YAABUCTypeInfo@@PAD@Z)referencedinfunction"void__cdeclSwapEndian(char*,unsignedint)"(??$SwapEndian@D@@YAX

c# - Reflection.Typeinfo/Reflection.Type 没有 GetProperties/GetFields 方法

我正在尝试为Windows8.1和WindowsPhone8.1制作Windows通用应用程序。这是我的问题的示例类,我使用类型int作为示例,但无论我使用什么类,错误都存在:usingSystem;usingSystem.Collections.Generic;usingSystem.Reflection;usingSystem.Text;namespacemyTtrpgHelper{classtestClass{voidtestMethod(){intc=newint();Typetype=c.GetType();TypeInfotypeInfo=IntrospectionExte

c++ - 为什么以及如何额外的括号改变 C++ (C++11) 中表达式的类型?

在什么情况下额外的分组括号会破坏C++(特别是C++11)中的内容?由于与此处无关的原因,我最终得到了一个表达式,该表达式周围有一组额外的、不必要的括号,我发现C++11typeinfo函数is_same正在确定它与没有括号的相同代码是不同的类型。这是一个令人费解的行为的简化示例:#includeusingnamespacestd;intmain(){strings="foo";cout::value;cout::value;cout::value;cout::value;return0;}此代码打印“1001”,这似乎表明中间两行中多余的括号导致表达式属于不同类型,但在更大的表达式中

c++ - 为什么以及如何额外的括号改变 C++ (C++11) 中表达式的类型?

在什么情况下额外的分组括号会破坏C++(特别是C++11)中的内容?由于与此处无关的原因,我最终得到了一个表达式,该表达式周围有一组额外的、不必要的括号,我发现C++11typeinfo函数is_same正在确定它与没有括号的相同代码是不同的类型。这是一个令人费解的行为的简化示例:#includeusingnamespacestd;intmain(){strings="foo";cout::value;cout::value;cout::value;cout::value;return0;}此代码打印“1001”,这似乎表明中间两行中多余的括号导致表达式属于不同类型,但在更大的表达式中

c++ - 如何在 C++ 中确定运行时的实际对象类型;

假设我们有一个类层次结构。在底部我们有Base和在顶部Derived。即使转换为基类指针,如何确定对象类。Base*b=newDerived():typeid(b).name();//iwantthistotellmethatthisisactuallyderivednotbaseobject除了手动实现字符串字段或类似的虚拟获取功能之外,还有其他方法吗?PS:我说的是独立于编译器的解决方案 最佳答案 确保基类至少有一个虚方法,包括并使用您当前的代码,只需额外取消引用typeid(*b).name().顺便提一下,typeidcal

c++ - 如何在 C++ 中确定运行时的实际对象类型;

假设我们有一个类层次结构。在底部我们有Base和在顶部Derived。即使转换为基类指针,如何确定对象类。Base*b=newDerived():typeid(b).name();//iwantthistotellmethatthisisactuallyderivednotbaseobject除了手动实现字符串字段或类似的虚拟获取功能之外,还有其他方法吗?PS:我说的是独立于编译器的解决方案 最佳答案 确保基类至少有一个虚方法,包括并使用您当前的代码,只需额外取消引用typeid(*b).name().顺便提一下,typeidcal