您好,我正在尝试初始化一个具有双精度值的对象,格式为 double filter[3][3];
但我不断收到以下错误。
无法在赋值中将 'double[3][3]' 转换为 'double'。
在我的标题中我有这个
@interface filter : NSObject
{
double **matrix;
}
@property(nonatomic)double **matrix;
-(id)initWithMatrix:(double**)filterMatrix;
在我的课堂上我有这个方法。
-(id)initWithMatrix:(double**)filterMatrix
{
matrix = filterMatrix;
return self;
}
我想这样称呼它。
double filter[3][3] = {0,0,0,0,1,0,0,0,0};
MyMatrix *myMatrix = [[MyMatrix alloc] initWithMatrix:filter];
我现在得到了错误。
Error: Cannot convert double[*][3] to double** in argument passing
关于这个问题的任何帮助都会很棒。
谢谢
A
那是因为double**
不等于double[*][*]
。实际上,double[*][*]
是无效类型,因为它使步幅未定义。double**
是一个指向双精度型指针的指针,或者换句话说,它是一个指向双精度型数组的指针。你应该只使用double*
作为你的类型。
Edit: 澄清,double[*][3]
仍然只是一个双精度数组,尽管它有二维。这仍然相当于double*
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)