我写了一个File IO库。一个功能,File::read
看起来是这样的:将unique_ptr用于浮点数组
template <typename T>
void File::read(T * t, unsigned long count) const
它读取count
牛逼到*t
。
现在,跳到客户端。我分配一个我想要读入的内存缓冲区。我写了这一点,它的伟大工程:
float * buffer = new float [16];
file->read(buffer, 16);
然而,这不是异常安全的。所以我决定将缓冲区包装在std::unique_ptr
中。在这里的某个地方,我犯了一个错误。
std::unique_ptr<float[]> buffer (new float[16]);
file->read(*buffer , 16);
这将产生以下的错误上文件 - >读:
敌不过 '运算符*'(操作数的类型是 '的std ::的unique_ptr')
我想通过取消引用unique_ptr
我得到一个指向float[]
数组的第一个元素的指针。我的错误在哪里,什么是修复?
我不知道如何从二进制文件读入载体(字节流),恐怕。 'File :: read'调用只是将'count * sizeof(T)'字节直接读入'T * t'指向的内存中。我正在寻找修复我的方法。 –
哦,'std :: array :: data'返回一个指向连续和变化的内存块的指针,所以我可以读入!这应该工作。非常感谢你。 –
您能否以正确的方式发布我的(已弃用)风格?知道学习的目的可能有用。 –