对于以下代码:
int i = 8;
int * p_i = &i;
int * p_j;
if (typeid(p_i) != typeid(p_j))
{
p_j= dynamic_cast<int *>(p_i);
}
我收到以下编译错误:
错误:无法将dynamic_cast'p_i'(类型'int *')转换为'int *'(目标不是指针或对类的引用)
我想念什么?
PS:这是我得到的行为的简化示例(带有模板函数等),因此请不要尝试在此代码段中找到任何目的。
UPD:由于此代码是模板函数的一部分,所以我不知道自己是否获得了完整的类或原语-这就是原因。
正如编译器错误指出的那样,您不能使用dynamic_cast
强制转换为int*
。
使用reinterpret_cast
了点。
从C ++ 11标准:
5.2.7动态转换[expr.dynamic.cast]
1表达式
dynamic_cast<T>(v)
的结果是将表达式转换v
为type的结果T
。T
应为完整类类型的指针或引用,或为“ cv void的指针”。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句