gpt4 book ai didi

模板调用之间的 C++ 转换

转载 作者:行者123 更新时间:2023-11-28 08:03:02 25 4
gpt4 key购买 nike

假设X<T>是一个以类作为参数的模板类,ABB 的类(class)来自 A不涉及多重继承或虚拟继承(即在 AB 之间转换时无需调整指针)。

X<A*> 执行电锯重新解释是否安全?至 X<B*>或相反亦然?当然,X<A*>不是X<B*> ,但这些类不应该总是共享相同的行为吗?因为使用了指针,所以内存布局应该是相等的。因此,让 X<B*> 的方法可能没问题。操作一个实际上是 X<A*> 的实例.

当然,这会以某种方式破坏类型安全,因为我可以插入一个 A* 的元素。进入 X<B*> , 但这超出了这个问题的范围。

最佳答案

如果你真的需要它,最好写这样的东西。

X<A*> a(new B());
X<B*> b( dynamic_cast<B*> ( a.get_pointer() ) );
if(b.get_pointer() != NULL)
{
...
}

关于模板调用之间的 C++ 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10894295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com