C++动态创建对象数组的编程问题

#include<iostream>#include<stdlib.h>usingnamespacestd;classcircle{public:floatarea(){... #include<iostream>
#include<stdlib.h>
using namespace std;

class circle
{
public:

float area()
{return radius*radius*3.14159;}

float getradius()
{return radius;}

bool setradius(float r);

float *creat(int ca);

private:
float radius;
};

bool circle::setradius(float r)
{
if(r>0)
{
radius=r;
return true;
}
else
return false;
}

circle *creat(int ca)
{
circle *p=new circle[ca];
for(int i=0;i<ca;i++)
(p+i)->setradius(i);
}

void print(circle *p,int ca)
{
float s=0;
cout<<"圆半径\t\t圆面积\n";
for(int i=0;i<ca;i++)
{
cout<<(p+i)->getradius()<<"\t\t"<<(p+i)->area()<<endl;
s+=(p+i)->area();
}
}

int main()
{

circle *p; //<<<<<<<<<<<<<<<<<<<<<<<<<

p=creat(10);
print(p,10);
delete[] p;

system("pause");
return 0;
}

用DEV C++编译通过,但运行出错,该怎么改,谢谢
展开
 我来答
binglink
2012-03-02 · TA获得超过1101个赞
知道小有建树答主
回答量:639
采纳率:0%
帮助的人:461万
展开全部
circle *creat(int ca)
{
circle *p=new circle[ca];
for(int i=0;i<ca;i++)
(p+i)->setradius(i);
// 这里缺少return, 应该编译出错才对
}
追问
return 什么?
追答
这个函数定义为返回 circle *, 就应该返回circle *
从函数实现看, 我估计你是想返回 p;
return p;
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式