![](/img/trans.png)
[英]invalid conversion from ‘const BYTE* {aka const unsigned char*}’ to ‘BYTE_PTR {aka unsigned char*}’
[英]invalid conversion from cql::cql_byte_t* {aka unsigned char*} to const char*
我试图从C ++中的字节数组中提取几个字节。.我正在使用ntohs
提取前两个字节,这是我的schemaId
..因此,我在FileMapMgr
类中创建了一个方法,该方法将使用ntohs
进行转换。
uint16_t newSchemaId;
for (size_t i = 0; i < result->column_count(); ++i) {
cql::cql_byte_t* data = NULL;
cql::cql_int_t size = 0;
result->get_data(i, &data, size);
int index=0;
// this line gives me exception
newSchemaId = FileMapMgr::get_uint16(&data[index]);
index += 2;
flag = false;
}
下面是我从上述方法调用的FileMapMgr类中的方法-
uint16_t FileMapMgr::get_uint16(const char* buffer)
{
if (buffer)
{
return ntohs(*reinterpret_cast<const uint16_t*>(buffer));
}
return 0;
}
以下是我得到的例外-
error: invalid conversion from cql::cql_byte_t* {aka unsigned char*} to const char* [-fpermissive]
我在这里想念什么吗?
我在这里使用Cascandra的libcql库。 因此,此cql::cql_byte_t*
来自libcql Cassandra库。
任何帮助将不胜感激。
编译器抱怨无法将cql::cql_byte_t*
转换为const char*
。 这显然是因为cql::cql_byte_t
被别名为unsigned char
。
您可以在调用方法之前强制转换指针,也可以添加新方法以采用const unsigned char *
。
对于前者:
// this line gives me exception
newSchemaId = FileMapMgr::get_uint16(reinterpret_cast<char *>(&data[index]));
对于后者:
uint16_t FileMapMgr::get_uint16(const unsigned char* buffer)
{
return get_uint16(reinterpret_cast<const char *>(buffer));
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.