我有以下:以指针数组作为参数,然后在分配给一个字段
class foo {
private:
bar * x[];
public:
foo(bar * x[]);
};
foo::foo(bar * x[]) {
this->x = x;
}
据我明白,x
是一个指针的指针到一个bar
阵列的第一元件(字段x
和参数x
)。但我一定是错的,因为这段代码不起作用。我得到以下错误:
In constructor 'foo::foo(bar**)': error: incompatible types in assignment of 'bar**' to 'bar* [0]'
请问该如何解决这个问题?我不正确的理解是什么?
注意:正如您可能已经假设的那样,bar是一个类,而不是某个原始类型的占位符。
编辑:
我的目标是在程序的其它地方这样做:
bar a[2];
bar b0 = bar(), b1 = bar();
a[0] = &b0;
a[1] = &b1;
bar * x[] = &a;
foo f = foo(x);
我将如何做到这一点?另外,bar * x[] = &a;
不等于bar ** x = &a
,其中&a
等于&(&a[0])
?我在这里不了解什么?
'x'不是一个指针,它是一个数组! – chris
'bar * x [];'如果没有给出私有大小为'0',其零大小数组不指向指针,*函数参数声明和正常声明是不同的* –
但是数组本身是指向它们的第一个元素的指针,不是吗? –