我有以下内容:
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])
?我在这里不理解什么?
答案 0 :(得分:3)
bar * x[];
x
是一个bar
指针数组(不确定为什么你没有声明数组大小)。
例如,
int a[] = { 11, 22, 33 };
int b[3];
b = a; // Error
您无法将一个阵列分配给另一个阵列。您必须以编程方式将各个数组元素复制到另一个。为了能够做到这一点,您需要源,目标数组的大小。