两个unit如何运行得到结果?(在线等,多谢!)

Wliqian 2003-01-05 08:56:16
要在窗体上画一图形:以特定点为中心,画弧、圆、椭圆和矩形。
我照例题编写如果下代码,开始时RUN为恢色不能运行,现在能
运行无错,但也得不到正确结果,我该如何解决。
现附代码如下望多指点,先谢过各位。
Unit2.h代码:
//---------------------------------------------------------------------
#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------class point
{
protected:
int x,y;
public:
point(int x=320,int y=240);
};
//---------------------------------------------------------------------
class circles:virtual public point
{
int radius;
public:
circles(int x,int y,int radius);
void show(TCanvas* canvas);
};
//---------------------------------------------------------------------
class arcs:virtual public point
{
int radius;
public:
arcs(int x,int y, int radius);
void show(TCanvas* canvas);
};
//---------------------------------------------------------------------class ellipses:virtual public point
{
int xradius,yradius;
public:
ellipses(int x,int y,int xradius,int yradius);
void show (TCanvas* canvas);
};
//---------------------------------------------------------------------
class rectangles:virtual public point
{
int length;
public:
rectangles(int x,int y,int length);
void show(TCanvas* cnavas);
};
//---------------------------------------------------------------------
class mix:arcs,ellipses,rectangles,circles
{
public:
mix(int x,int y,int radius1,int radius2);
void show(TCanvas* canvas);
};
//---------------------------------------------------------------------
#endif


Unit2.cpp代码:
//---------------------------------------------------------------------#include <string.h>
#include <conio.h>
#include <vc1.h>
#pragma hdrstop
#include "Unit2.h"
//---------------------------------------------------------------------
#pragma package(smart_init)
//---------------------------------------------------------------------point::point(int x,int y)
{
point::x=x;
point::y=y;
}
//---------------------------------------------------------------------circles::circles(int x,int y,int radius):poit(x,y)
{
circles::radius=radius;
}
//---------------------------------------------------------------------
void circles::show(TCanvas* canvas)
{
canvas->Ellipse(x-radius,y-radius,x+radius,y+radius);
}
//---------------------------------------------------------------------arcs::arcs(int x,int y,int radius):point(x,y)
{
arcs::radius=radius;
}
//---------------------------------------------------------------------void arcs::show(TCanvas* canvas)
{
canvas->Arc(x-radius,y-radius,x+radius,y+radius,
x+radius,y-radius,x-radius,y-radius);
}
//---------------------------------------------------------------------ellipses::ellipses(int x,int y,int xradius,int yradius):point(x,y)
{
ellipses::xradius=xradius;
ellipses::yradius=yradius;
}
//---------------------------------------------------------------------
void ellipses::show(TCanvas* canvas)
{
canvas->Ellipse(x-xradius,y-yradius,x+xradius,y+yradius);
}
//---------------------------------------------------------------------
rectangles::rectangles(int x,int y,int length):point(x,y)
{
rectangles::length=length;
}
//---------------------------------------------------------------------
void rectangles::show(TCanvas* canvas)
{
canvas->Rectangle(x-length/2,y-length/2,x+length/2,y+length/2);
}
//---------------------------------------------------------------------
mix::mix(int x,int y,int radius1,int radius2)
:arcs(x,y,radius2),ellipses(x,y,radius1,radius2+5),
rectangles(x,y,radius1*2+10),circles(x,y,radius1*2)
{
}
//---------------------------------------------------------------------
void mix::show(TCanvas* canvas)
{
ards::show(cnavas);
ellipses::show(canvas);
rectangles::show>canvas);
circles::show(canvas);
}
//---------------------------------------------------------------------


Form1r OnPaint事件响应函数:
#include "Unit2.h"
//---------------------------------------------------------------------
void __fastcall TForm1::FormPaint(TObject *Sender)
{
Canvas->Brush->Style=bsClear;
Canvas->Pen->Width=10;
mix object(220,240,100,70);
object.show (Canvas);
}
//---------------------------------------------------------------------
...全文
25 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
sdsugar 2003-01-07
  • 打赏
  • 举报
回复
是啊,是啊。JSP大哥好有耐心。真佩服你哦, 希望以后能得到JSP大哥的指教
GaoLun 2003-01-07
  • 打赏
  • 举报
回复
来晚了 只能来看看了

就算是来早了 也只敢看看了 呵呵
Wliqian 2003-01-06
  • 打赏
  • 举报
回复
to wgh166(面朝PC屏幕·背靠西子湖)
和RomanticProgrammer(兰企鹅||南极俺最帅):
不要这样啦!你们现在都比我厉害,在此之前JSP大哥
一定也帮过你们嘛。我现在也指望你们多多相助,共
同进步。
谢谢关心。
:)
RomanticProgrammer 2003-01-06
  • 打赏
  • 举报
回复
佩服JSP大哥的耐心,诲人不倦的精神.
牧牛人软件 2003-01-06
  • 打赏
  • 举报
回复
jishiping(JSP 季世平) 的服务态度太好!真周到,随便问一句你会JSP吗?
jishiping 2003-01-06
  • 打赏
  • 举报
回复
将Unit2.h中的virtual public改成public就好了。之前我也没有看,没想到你会这么写,我还是第一次看到这样写的。

#ifndef Unit2H
#define Unit2H
//---------------------------------------------------------------------
class point
{
protected:
int x,y;
public:
point(int x=320,int y=240);
};
//---------------------------------------------------------------------
class circles: public point
{
int radius;
public:
circles(int x,int y,int radius);
void show(TCanvas* canvas);
};
//---------------------------------------------------------------------
class arcs: public point
{
int radius;
public:
arcs(int x,int y, int radius);
void show(TCanvas* canvas);
};
//---------------------------------------------------------------------
class ellipses: public point
{
int xradius,yradius;
public:
ellipses(int x,int y,int xradius,int yradius);
void show (TCanvas* canvas);
};
//---------------------------------------------------------------------
class rectangles: public point
{
int length;
public:
rectangles(int x,int y,int length);
void show(TCanvas* cnavas);
};
//---------------------------------------------------------------------
class mix:arcs,ellipses,rectangles,circles
{
public:
mix(int x,int y,int radius1,int radius2);
void show(TCanvas* canvas);
};
//---------------------------------------------------------------------
#endif
Wliqian 2003-01-06
  • 打赏
  • 举报
回复
to jishiping(JSP季世平):
我又检查调试了两个多小时,无耐仍然无法
得到:以特定点为中心的圆、矩形、椭圆和弧。
希望能把你发现的那些明显错误告诉我。
非常感谢!
:)
Wliqian 2003-01-06
  • 打赏
  • 举报
回复
to jishiping(JSP季世平)
能得到你的帮助,我非常高兴,十分感谢!
我在提问时就说了希望得到的结果了,跟你得到
的一样。我再去改一下有错的地方。
谢谢!
:)
Wliqian 2003-01-06
  • 打赏
  • 举报
回复
to ThinkX(思考中)
谢谢你的指点。你的话对我有很大帮助,
有你的指点,我会进步更快的。
:)

ThinkX 2003-01-05
  • 打赏
  • 举报
回复
我从另一个方面说一下:
你的各个图形类从point下继承是不符合现实的,
应该各个图形包含几个point才对。继承是一种“是一个”的关系,而复合是一种“有一个”的关系。如果rectangles从point继承,那就是说rectangle是一个point,显然这根本是错误的。
面向对象是一种技术(语言层次上的),更是一种理念。虽然用了面向对象的语言,如C++和java,但是并没有按照这种理念思考显然是不行的。
楼主虽然想用这种理念去抽象point等,只不过可能是错了,但是至少已经入门了。
jishiping 2003-01-05
  • 打赏
  • 举报
回复
上面有一些明显的错误,我改了一下,看到一个大圆,里面有一个方框,方框里面有一个椭圆,椭圆内部的上面是一个圆弧。你说得不到正确结果,不知道你希望的是什么结果。
Wliqian 2003-01-05
  • 打赏
  • 举报
回复
哇等了半个多小时都没人来救我!
up一下也好呀。

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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