小编use*_*475的帖子

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

让我们说我们有一个类层次结构.在底部我们有Base和顶部Derived.如何确定对象类,即使它被转换为基类指针.

Base* b = new Derived():

typeid(b).name(); // i want this to tell me that this is actually derived not base object
Run Code Online (Sandbox Code Playgroud)

有什么方法除了手动实现字符串字段或这样的虚拟get函数?

PS:我在谈论与编译器无关的解决方案

c++ typeid typeinfo

17
推荐指数
2
解决办法
2万
查看次数

如何在C预处理器中合并符号名称和符号值

我们的想法是创建自动脚轮,它会根据给定的前缀和数字粘贴指向变量的指针.假设你有一些不断开发的界面,所以你每隔几周就会获得一些新的结构版本.因此,您可以只使用SOME_DEFINE(thisStructure,version),而不是编写明确的"(structure1*),(structure2*)"等等; 哪个会处理这个案子

我认为这可以解决问题

#define d1(x) x
#define d2(x,y) x##y

void someFunction()
{
    int temp = 3;
    d2(myStructure,d1(temp)) *thisStruct;
}
Run Code Online (Sandbox Code Playgroud)

我希望预处理器嵌套自己并首先粘贴d1操作,然后将d1操作的结果与第一个d2参数合并.然而它不起作用,所以我的问题是,我怎么能实现这个原因似乎是可能的.

c c++ casting c-preprocessor

0
推荐指数
1
解决办法
255
查看次数

标签 统计

c++ ×2

c ×1

c-preprocessor ×1

casting ×1

typeid ×1

typeinfo ×1