我在一个类中有以下数据:
std::vector<uint8_t> mData;
我使用的库函数之一(来自 SDL)需要一个 void* 到像素缓冲区地址。我尝试编写以下类成员函数:
uint8_t* GetBuffer() const { return &mData[0]; }
但是我得到了错误:
error: invalid conversion from 'const value_type* {aka const unsigned char*}' to 'uint8_t* {aka unsigned char*}' [-fpermissive]
我很困惑为什么我会收到这个错误( vector 内存是在一个类中分配的),为什么它试图返回一个常量地址?如果我仍然想避免动态分配内存,那么解决此问题的最佳方法是什么?
最佳答案
const
方法的this
指针是const
,因此是它的成员。 mData
因此是 const
。
要么返回一个const uint8_t*
,要么使该方法成为非常量:
uint8_t* GetBuffer() { return &mData[0]; }
const uint8_t* GetBuffer() const { return &mData[0]; }
关于c++ - uint8_t vector 的内存地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32548095/