让我们说我们有一个类层次结构.在底部我们有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:我在谈论与编译器无关的解决方案
我们的想法是创建自动脚轮,它会根据给定的前缀和数字粘贴指向变量的指针.假设你有一些不断开发的界面,所以你每隔几周就会获得一些新的结构版本.因此,您可以只使用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参数合并.然而它不起作用,所以我的问题是,我怎么能实现这个原因似乎是可能的.