Реализация TPCircularBuffer в классе C ++ - PullRequest
0 голосов
/ 12 февраля 2019

Я пытаюсь реализовать циклический буфер в моем классе.

Если я инициирую его в методе 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

Я не понимаю

1 Ответ

0 голосов
/ 12 февраля 2019

Так как TPCircularBuffer имеет элемент данных volatile, его невозможно скопировать.Это делает ваш класс тривиально не копируемым.

Если вам нужна семантика копирования на MyClass, вам нужно предоставить свой собственный конструктор копирования:

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