注册 登录
编程论坛 C++教室

[求助]46 only constructors take base initializers

srzdy888 发布于 2007-04-19 00:30, 3726 次点击
class Circle:public Point
{
public:
Circle(float x=0,float y=0,float r=0);
void setRadius(float);
float getRadius()const;
virtual float area() const;
virtual void shapeName() const {cout<<"Circle";}
friend ostream&operator <<(ostream&,const Circle &);
protected:
float radius;
};
Circle::Circle(float x,float y,float r):Point(x,y),radius(r){}
void Circle::setRadius(float r):radius(r){}//这里就是问题所在
float Circle::getRadius() const{return radius;}
float Circle::area() const {return 3.14159*radius*radius;}
ostream&operator<<(ostream &output,const Circle &c)
{output<<"["<<c.x<<","<<c.y<<"]r="<<c.radius;
return output;
}

哪位大哥能帮我看看啊!
帖子名字就是dev-c++提示的错误
不好意思 没有说明白

[此贴子已经被作者于2007-4-19 12:12:17编辑过]

3 回复
#2
aipb20072007-04-19 10:03
问题??
#3
游乐园2007-04-19 13:03

在没有const限制的前提下,自己类的成员函数访问自己的类的变量是允许的,你的问题是初始化列表使用错误

除了构造函数初始化成员变量或私有变量是const修饰的时候,普通函数不能用初始化列表来赋值的,把赋值过程改到函数体里就可以了

void Circle::setRadius(float r)
{
radius=r;
}

#4
srzdy8882007-04-19 13:08
通过了 太感谢了
游侠大哥真的很乐意帮助我们这些初学者
感谢了
1