我创建了以下类,其中包含卷积器的所有数组,并且我尝试创建一个getter函数来访问另一个类中的卷积器:

class ImpulseCreator
{
public:

    ImpulseCreator();
    ~ImpulseCreator();

    OwnedArray<fftconvolver::FFTConvolver> getConvolver();


private:
    //convolver
    AudioSampleBuffer impulseBuffer1;
    AudioSampleBuffer impulseBuffer2;
    AudioSampleBuffer finalImpulseBuffer;

    OwnedArray<fftconvolver::FFTConvolver> preConvolvers;
    OwnedArray<fftconvolver::FFTConvolver> convolvers;
};

然后在.cpp文件中,我有以下代码:
OwnedArray<fftconvolver::FFTConvolver> ImpulseCreator::getConvolver()
{
    return convolvers;
}

关于“返回卷积器”;行,我收到一条错误消息:
Call to deleted constructor of OwnedArray<fftconvolver::FFTConvolver>

有任何想法吗?

最佳答案

您应该将函数的签名更改为

OwnedArray<fftconvolver::FFTConvolver> const& getConvolver() const;

所以您要返回对该数组的引用。按照编写的方式,它将返回数组的副本,编译器似乎在告诉您该副本构造函数已删除。

如果需要修改数组的内容,还可以返回一个非常量引用
OwnedArray<fftconvolver::FFTConvolver>& getConvolver();

10-08 07:36