将数组指针作为参数,然后将其指定给字段

时间:2013-05-17 05:26:39

标签: c++ pointers

我有以下内容:

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

1 个答案:

答案 0 :(得分:3)

bar * x[];

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

例如,

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

b = a;  // Error

您无法将一个阵列分配给另一个阵列。您必须以编程方式将各个数组元素复制到另一个。为了能够做到这一点,您需要源,目标数组的大小。