C++:invalid conversion from 'unsigned char *' to 'const char *'

编程入门 行业动态 更新时间:2024-10-24 04:43:04

C++:invalid <a href=https://www.elefans.com/category/jswz/34/1767734.html style=conversion from 'unsigned char *' to 'const char *'"/>

C++:invalid conversion from 'unsigned char *' to 'const char *'

可使用reinterpret_cast进行强制转换,示例如下所示:

[cpp]  view plain  copy
  1. unsigned char *foo();  
  2. std::string str;  
  3. str.append(reinterpret_cast<const char*>(foo()));  

reinterpret_cast用法:
reinterpret_cast<type-id> (expression)
type-id 必须是一个指针、引用、算术类型、函数指针或者成员指针。
reinterpret_cast运算符是用来处理无关类型之间的转换;它会产生一个新的值,这个值会有与原始参数(expressoin)有完全相同的比特位。例如:int *n= new int ;   double *d=reinterpret_cast<double*> (n);   在进行计算以后,d 包含无用值。这是因为 reinterpret_cast 仅仅是复制 n 的比特位到 d,没有进行必要的分析。因此,需要谨慎使用 reinterpret_cast。 
        IBM的C++指南里倒是明确告诉了我们reinterpret_cast可以,或者说应该在什么地方用来作为转换运算符:
※从指针类型到一个足够大的整数类型
※从整数类型或者枚举类型到指针类型
※从一个指向函数的指针到另一个不同类型的指向函数的指针
※从一个指向对象的指针到另一个不同类型的指向对象的指针
※从一个指向类函数成员的指针到另一个指向不同类型的函数成员的指针
※从一个指向类数据成员的指针到另一个指向不同类型的数据成员的指针

        事实上reinterpret_cast的使用并不局限在上边所说的几项的,任何类型的指针之间都可以互相转换,都不会得到编译错误。上述列出的几项,可能 是Linux下reinterpret_cast使用的限制,也可能是IBM推荐我们使用reinterpret_cast的方式。

转载:

更多推荐

C++:invalid conversion from 'unsigned char *' to 'const char *�

本文发布于:2024-02-12 08:30:28,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1686965.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:conversion   invalid   unsigned   const   char

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!