我想知道如何将指针传递给函数中的数组,并且在函数内部我仍然希望将它用作指针。
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类的子类。我需要使用动态绑定来评估计算区域。
答案 0 :(得分:1)
简单,就像这样
sp[0]=objRec;
你对所有的指针感到困惑。你有一个指向对象数组的指针。但是你的代码写得好像你有一个指向对象指针数组的指针,这根本不是一回事。
在你的第二段代码中你有一个指针数组,这就是你的第二段代码编译的原因。
克里斯指出,你还需要失去const
。
答案 1 :(得分:1)
process(Shape const *sp){
sp[0]=&objRec;
}
您使用了const
。所以它没有用。尝试删除const
。您无法修改const
类型的值。
更多的是你正在分配objRect的地址。试试这个:
process(Shape const *sp){
sp[0]=objRec;
}
答案 2 :(得分:1)
从签名中删除const
:
process(Shape *sp)
如果objRec的类型为Shape
,则不要从中获取指针:
process(Shape *sp){
sp[0]=objRec;
}
答案 3 :(得分:0)
您的=
服务器 objRec
shape class
运营商
objRecTYPE& operator=(objRecTYPE& s)
{
// your code
return *this;
}
答案 4 :(得分:0)
您正尝试将sp [0]的值分配给objRec的地址。试着省略地址运营商。