Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在类中为所属数组创建get函数_C++ - Fatal编程技术网

C++ 在类中为所属数组创建get函数

C++ 在类中为所属数组创建get函数,c++,C++,我创建了以下类,其中包含一个拥有的卷积器数组,并尝试创建一个getter函数来访问另一个类中的卷积器: class ImpulseCreator { public: ImpulseCreator(); ~ImpulseCreator(); OwnedArray<fftconvolver::FFTConvolver> getConvolver(); private: //convolver AudioSampleBuffer impuls

我创建了以下类,其中包含一个拥有的卷积器数组,并尝试创建一个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;
};
类脉冲发生器
{
公众:
脉冲发生器();
~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
为其他人所有,因此不允许在非友好上下文中破坏其对象