【发布时间】:2018-05-06 19:23:50
【问题描述】:
我有一个关于 oop 和 decltype 的 c++ 示例:
class parent {
};
class child : public parent {
};
int main()
{
parent * p = new child;
decltype(*p) c = *p;
}
在上面的代码中,c 的类型是 parent &,但我希望 c 的类型是 child。
我可以吗?
感谢您的阅读。
【问题讨论】:
-
您可以直接将
c声明为child,也可以将p声明为child *... -
您不能让
p的编译时类型依赖于运行时属性。根据您尝试以这种方式解决的问题,可能有也可能没有适合您的解决方法。如果您有兴趣获得有关其他方法的帮助,请提供有关此原因的更多详细信息。 -
您正在寻找
typeid。 -
我明白了。可能是不可能的。非常感谢!
-
查询对象的动态类型到例如调用不属于静态类型接口的方法通常是设计问题的标志。也许如果您打开另一个问题并描述为什么要这样做,有人可以提出更好的替代设计?