1

我想知道如何将指针传递给函数中的数组,并且在函数内部我仍然想将它用作指针。

process(Shape **sp);

int main(){
  Shape* objShape[5];
  process(objShape);
}

process(Shape **sp) {
  sp[0]=&objRec; // No Errors
  cout<<sp[0]->computeArea(); // WORKS
}

但是当我将 COMPUTEAREA() 方法转移到另一个函数时它不起作用

getArea(Shape **sp){
  cout<<sp[0]->computeArea(); // I get a segmentation fault error;
}

objRec 是 Shape 类的子类。而且我需要使用动态绑定来评估计算区域。

4

5 回答 5

1

很简单,像这样

sp[0]=objRec;

你让自己对所有的指针感到困惑。您有一个指向对象数组的指针。但是您的代码编写得好像您有一个指向对象指针数组的指针,这根本不是一回事。

在您的第二段代码中,您确实有一个指针数组,这就是您的第二段代码编译的原因。

正如克里斯指出的那样,您还需要丢失const.

于 2012-10-21T17:59:44.223 回答
1
process(Shape const *sp){
    sp[0]=&objRec;
}

你用过const。所以它没有用。尝试删除const. 您不能修改const类型的值。

此外,您正在分配 objRect 的地址。试试这个:

process(Shape const *sp){
    sp[0]=objRec;
}
于 2012-10-21T18:07:15.563 回答
1

const从您的签名中删除:

process(Shape *sp)

如果 objRec 是类型,Shape则不要从中获取指针:

process(Shape *sp){

  sp[0]=objRec; 
}
于 2012-10-21T18:07:27.247 回答
0

您没有在采用objRec 类型=时重载运算符shape class

objRecTYPE& operator=(objRecTYPE& s)
{
    // your code

    return *this;
}
于 2012-10-21T18:05:58.127 回答
0

您正在尝试将 sp[0] 的值分配给 objRec 的地址。尝试省略地址运算符。

于 2012-10-21T18:07:08.500 回答