【发布时间】:2014-12-18 19:57:36
【问题描述】:
我正在尝试用 C++ 编写 LED 灯条驱动程序。现在我有一个Strip 类和一个Driver 类; Strip 类抽象出具有多个像素的 LED 灯条,而 Driver 类将 Strip 数据聚合到单个缓冲区中以通过 UDP 连接发送。
相关的部分类:
class Strip {
public:
...
??? getPixelData();
int getPixelDataLength();
protected:
std::vector<unsigned char> mPixelData;
class Driver {
public:
...
void aggregateStrips();
protected:
vector<unsigned char> mBuffer;
serialize 将所有红-绿-蓝像素数据写入vector<unsigned char>。然后驱动程序调用Strip.getPixelData() 获取mPixelData 的地址,并调用getPixelDataLength() 计算memcpy() 的字节数。
aggregateStrips() 做了这样的事情:
int packetLength = 0;
for(auto strip : Strips) {
memcpy(&mBuffer[packetLength], strip->getPixelData(), strip->getPixelDataLength());
packetLength += strip.getPixelDataLength();
}
我的问题是——getPixelData() 应该返回什么?它是否应该将智能指针 (shared_ptr?) 返回到向量?或者也许是一个参考?我只想要地址(和长度),因为我打算memcpy它。
谢谢!
【问题讨论】:
标签: c++ vector reference smart-pointers