C++学习:继承问题

南气子水 2012-01-22 02:20:41
题目:把定义平面直角坐标系上的一个点的类CPoint作为基类,派生出描述一条直线的类CLine,再派生出一个矩形类CRect。要求成员函数能求出两点间的距离,矩形的周长和面积等。设计一个测试程序,并构造完整的程序。
下面程序报错:
#include <iostream.h>
#include <math.h>

class CPoint
{
private:
double nPosX,nPosY;

public:
CPoint(double x, double y)
{
nPosX = x;
nPosY = y;
}
void ShowPos()
{
cout<<"当前位置: x = "<<nPosX<<" , y = "<<nPosY<<endl;
}
};
class CLine: public CPoint
{
private:
double nLength;

public:
CLine()
{
nLength = 0;
}
double LineLength(double x1, double y1, double x2, double y2)
{
nLength = sqrt((x1-x2)*(x1-x2) + (y1-y2)*(y1-y2));
return nLength;
}
};

class CRect: public CPoint
{
private:
double dWideL;
double dHeightL;

public:
CRect()
{
dWideL = 0;
dheightL = 0;
}
double RectSL(double WideL, double HeightL)
{
return 2*(WideL + HeightL);
}
};

int main()
{
CPoint LU(0.0,1.0);
CPoint LD(0.0,0.0);
CPoint RU(1.0,1.0);
CPoint RD(1.0,0.0);

CLine Wide;
CLine Length;

CRect One;

double AWide;
double ALength;
double P;

AWide = Wide.LineLength(0.0,1.0,1.0,1.0);
ALength = Length.LineLength(0.0,1.0,0.0,0.0);

P = One.RectSL(AWide, ALength);

return 0;
}

错误信息为: error C2512: 'CPoint' : no appropriate default constructor available
...全文
126 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
a707000646 2012-01-22
  • 打赏
  • 举报
回复
1楼正解
Cline的构造函数可以这么写
CLine(double x, double y):CPoint(x,y)
{
nPosX = x;
nPosY = y;
}
昵称很不好取 2012-01-22
  • 打赏
  • 举报
回复
子类构造时候需要先调用父类的构造函数,因此子类的构造函数中需要告知如何构造父类,如果父类具有默认构造函数,则可以不写

64,654

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧