我在函数中有一个float数组的unique_ptr,我想将其更改为uint8_t数组的unique_ptr。换句话说,unique_ptr<float[]>
-> unique_ptr<uint8_t[]>
。
这是我尝试过的
void my_function(std::unique_ptr<float*> data) {
std::unique_ptr<uint8_t*> converted_data(reinterpret_cast<uint8_t*>(data.release()));
// ...
// Processing converted_data ...
}
由于出现此错误: no matching constructor for initialization of 'std::unique_ptr<uint8_t *>'
,我想知道是否可以在不复制数据的情况下实现这一目标。
答案 0 :(得分:1)
您正在强制转换为不兼容的类型。
data.release()的类型为float **,因为它返回指向unique_ptr中的内容的原始指针(在这种情况下为float *)。您应该改用uint_8t **(尽管看起来还是个坏主意)。