在类中为拥有的数组创建get函数

时间:2016-02-04 12:24:02

标签: c++

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

Store        Period         Value
--------------------------------------
Store1       Jan15          123            
Store1       Feb15          789
Store1       Mar15          112
Store1       Apr15          415
Store2       Jan15          456
Store2       Feb15          101
Store2       Mar15          131
Store2       Apr15          161

然后在.cpp文件中我有以下代码:

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;
};

在&#34;返回缠扰者上;&#34;我收到一条错误,上面写着:

OwnedArray<fftconvolver::FFTConvolver> ImpulseCreator::getConvolver()
{
    return convolvers;
} 

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

您应该将功能的签名更改为

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

所以你要将引用返回给数组。如上所述,它将返回数组的副本,编译器似乎告诉您复制构造函数已被删除。

如果您需要能够修改数组的内容,您还可以返回非const引用

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

答案 1 :(得分:1)

您将通过副本返回,请尝试通过引用返回:

OwnedArray<fftconvolver::FFTConvolver>& 
ImpulseCreator::getConvolver() {
    return convolvers;
}


OwnedArray<fftconvolver::FFTConvolver> const& 
ImpulseCreator::getConvolver() const {
    return convolvers;
}

编译器告诉您OwnedArray析构函数已声明已删除。从名称中猜测OwnedArray是由其他人拥有的,因此您不允许在非友好的背景下破坏其对象。