我正在尝试在我的课堂上实现循环缓冲区。
如果我在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/