我创建了以下类,其中包含一个拥有的卷积器数组,我尝试创建一个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;
}
有什么想法吗?
答案 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
是由其他人拥有的,因此您不允许在非友好的背景下破坏其对象。