【发布时间】:2013-04-02 23:38:18
【问题描述】:
我有一个提供GetBuffer() 和GetBufferSize() 方法的流对象。 GetBuffer 方法返回一个原始的 uint8_t 指针。我想将此缓冲区(按值)传递给另一个需要shared_array<uint8_t> 的对象。我正在使用 boost,(我对它还很陌生),这就是我想出的。
// relevant protos for a and b
void BClass::SetData(shared_array<uint8_t> data, size_t data_len);
uint8_t* AClass::GetBuffer(void);
size_t AClass::GetBufferSize(void);
AClass a;
BClass b;
shared_array<uint8_t> data = shared_array<uint8_t>(new uint8_t[a.GetBufferSize()]);
memcpy(data.get(), a.GetBuffer(), a.GetBufferSize());
b.SetData(data, a.GetBufferSize());
感觉应该有类似于 boost 的 make_shared 的东西可以解决这个问题。我错过了什么明显的东西吗?
【问题讨论】:
标签: c++ boost shared-ptr