C++ 如何获取带有地址的变量类型?

C++ 如何获取带有地址的变量类型?,c++,pointers,types,memory-address,C++,Pointers,Types,Memory Address,我正试图解析一个矮人文件。它正在工作,但现在我想以正确的格式显示值,因此符号/变量的类型是相关的。 我将地址和类型作为符号字符串 糟糕的解决方案是: if(symbol->getTypeAsString().contains("int")){ int* intPtr = (int*)symbol->getAddressAsLong(); } else if(symbol->getTypeAsString().contains("double")){ d

我正试图解析一个矮人文件。它正在工作,但现在我想以正确的格式显示值,因此符号/变量的类型是相关的。 我将地址和类型作为符号字符串

糟糕的解决方案是:

if(symbol->getTypeAsString().contains("int")){
    int* intPtr = (int*)symbol->getAddressAsLong(); 
}    
else if(symbol->getTypeAsString().contains("double")){
    double* intPtr = (double*)symbol->getAddressAsLong();
}
是否可以在没有条件构造的情况下检测给定地址处的符号类型

我想这样做:

int var = 0x40E251;
auto* varPtr = (auto*)var;
std::cout << typeid(*varPtr).name() << std::endl;
int var=0x40E251;
auto*varPtr=(auto*)var;

std::cout
symbol->getAddress()
的返回类型是什么?您不能在
symbol
中添加一个与值类型对应的
enum
?getAddress()的返回类型是从类型long开始的看起来您正在使用类型擦除。在处理这个问题时,通常使用访问者模式来做出决定。感谢您的输入。当类型类似于
map