1

我有以下内容:

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])?我在这里不明白什么?

4

1 回答 1

3
bar * x[];

x是一个bar指针数组(不知道为什么你没有声明数组大小)。

例如,

int a[] = { 11, 22, 33 };
int b[3];

b = a;  // Error

您不能将一个数组分配给另一个数组。您必须以编程方式将各个数组元素复制到另一个。为此,您需要源、目标数组的大小。

于 2013-05-17T05:30:22.857 回答