无法使用“value_type *”类型的右值(又名 char*)初始化“const unsigned char *”类型的参数
Posted
技术标签:
【中文标题】无法使用“value_type *”类型的右值(又名 char*)初始化“const unsigned char *”类型的参数【英文标题】:Cannot initialize a parameter of type "const unsigned char *" with an rvalue of type 'value_type *' (aka char*) 【发布时间】:2014-04-01 12:02:40 【问题描述】:我在以下几行中收到错误“无法使用 'value_type ' (aka char) 类型的右值初始化类型为“const unsigned char *”的参数”。
image->initWithImageData(&(buffer->front()),buffer->size());
缓冲区的类型为std::vector<char> *buffer
&(buffer->front()
出现上述错误,有人知道如何解决吗?
【问题讨论】:
unsigned char*
和 char*
是两种不同的类型。你能把buffer
改成std::vector<unsigned char> *buffer
【参考方案1】:
const 不是问题,但您需要强制转换指针 - 通常不建议这样做,但如果您没有其他选择,您可以执行以下操作之一
char *a = buffer->data();
const unsigned char *b= reinterpret_cast<unsigned char *>(a);
或纯 C 风格
const unsigned char *b= (const unsigned char *)(a);
【讨论】:
以上是关于无法使用“value_type *”类型的右值(又名 char*)初始化“const unsigned char *”类型的参数的主要内容,如果未能解决你的问题,请参考以下文章
无法使用“const Node *”类型的右值初始化“Node *”类型的变量
错误:对类型为'const ItemInstance'的引用无法绑定到类型为'void'的右值
为啥 C++ 不能用“超类”类型的右值初始化“派生类”类型的变量?