C++ 在类中为所属数组创建get函数
我创建了以下类,其中包含一个拥有的卷积器数组,并尝试创建一个getter函数来访问另一个类中的卷积器:C++ 在类中为所属数组创建get函数,c++,C++,我创建了以下类,其中包含一个拥有的卷积器数组,并尝试创建一个getter函数来访问另一个类中的卷积器: class ImpulseCreator { public: ImpulseCreator(); ~ImpulseCreator(); OwnedArray<fftconvolver::FFTConvolver> getConvolver(); private: //convolver AudioSampleBuffer impuls
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;
};
类脉冲发生器
{
公众:
脉冲发生器();
~pulsecreator();
OwnedArray getConvolver();
私人:
//卷积器
音频采样缓冲脉冲缓冲1;
音频采样缓冲脉冲缓冲2;
音频采样缓冲区finalImpulseBuffer;
自有阵列预卷;
自有阵列召集人;
};
然后在.cpp文件中,我有以下代码:
OwnedArray<fftconvolver::FFTConvolver> ImpulseCreator::getConvolver()
{
return convolvers;
}
OwnedArray脉冲发生器::getConvolver()
{
返回卷积器;
}
在“返回卷积器”线路上,我收到一个错误,上面写着:
Call to deleted constructor of OwnedArray<fftconvolver::FFTConvolver>
调用OwnedArray的已删除构造函数
有什么想法吗?您应该将函数的签名更改为
OwnedArray<fftconvolver::FFTConvolver> const& getConvolver() const;
ownedaray常量&getConvolver()常量;
因此,您将返回对数组的引用。如前所述,它将返回数组的一个副本,编译器似乎在告诉您副本构造函数已被删除
如果需要修改数组的内容,还可以返回非常量引用
OwnedArray<fftconvolver::FFTConvolver>& getConvolver();
OwnedArray&getConvolver();
如果要通过副本返回,请尝试通过引用返回:
OwnedArray<fftconvolver::FFTConvolver>&
ImpulseCreator::getConvolver() {
return convolvers;
}
OwnedArray<fftconvolver::FFTConvolver> const&
ImpulseCreator::getConvolver() const {
return convolvers;
}
ownedaray&
脉冲发生器::getConvolver(){
返回卷积器;
}
自有阵列常数和
脉冲发生器::getConvolver()常数{
返回卷积器;
}
编译器告诉您,OwnedArray
析构函数被声明为已删除。从名称猜测ownedaray
为其他人所有,因此不允许在非友好上下文中破坏其对象