我正在尝试在我的课堂上实现循环缓冲区。

如果我在init方法中启动它,它可以工作,但是我想在private下声明缓冲区变量,因此我可以从类内的任何地方访问它:

#import "AudioKit/TPCircularBuffer.h"

class MyClass{
public:
MyClass() { //..
}

MyClass(int id, int _channels, double _sampleRate)
{
   // if I uncomment the following line, it works:
   // TPCircularBuffer cbuffer;
   TPCircularBufferInit(&cbuffer, 2048);
}
private:
   // this doesn't work:
   TPCircularBuffer cbuffer;
};


这样做会导致以下编译错误:
调用“ MyClass”的隐式删除副本构造函数

我听不懂

最佳答案

由于TPCircularBuffer具有volatile数据成员,因此它是不可复制的。这使得您的班级几乎不可复制。
如果需要MyClass上的复制语义,则需要提供自己的复制构造函数:

MyClass(MyClass const& other) : // ...
{
    TPCircularBufferInit(&cbuffer, 2048); // doesn't copy anything, but you might want to
}

关于c++ - 在C++类中实现TPCircularBuffer,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54656304/

10-11 21:54