我有以下内容:
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])
?我在这里不明白什么?