MyException - 我的异常网
当前位置:我的异常网» C++ » 急求析构函数,该如何解决

急求析构函数,该如何解决

www.MyException.Cn  网友分享于:2013-01-06  浏览:5次
急求析构函数
#include <iostream>
 #include <string>
 using namespace std;
 
 class myerror
 {
     std::string str;
 public:
     myerror(const char* str):str(str){}
     const char* what()const
     {
         return str.c_str();
     }
 };
 class Base //纯虚基类
 {
 private:
     int x;
     int y;
 protected:
     enum {MAX_OBJ_NUM=3}; //能存入的最大对象数
 public:
     Base():x(0),y(0) {}
     Base(int x,int y):x(x),y(y) {}
     virtual void draw()=0; //纯虚函数
     void move();
     Base* Pd[MAX_OBJ_NUM];  //实际存放各派生类的对象地址
     virtual ~Base(){}
 };
 class Poit :virtual public Base //点
 {
 public:
     Poit():Base() {}
     Poit(int x,int y):Base(x,y) {}
     void draw();
     virtual ~Poit(){cout<<"poit\n";}  //这里应如何实现
 };
 
 class Line :virtual public Base //线
 {
 private:
     int a;
     int b;
 public:
     Line():Base(),a(0),b(0) {}
     Line(int x,int y,int a,int b):Base(x,y),a(a),b(b) {}
     void draw();
     virtual ~Line(){cout<<"line\n";}  //这里应如何实现
 };
 
 class Circle :virtual public Base //圆
 {
 private:
     int r;
 public:
     Circle():Base(),r(0) {}
     Circle(int x,int y,int r):Base(x,y),r(r) {}
     void draw();
     virtual ~Circle(){cout<<"circle\n";}  //这里应如何实现
 };
 class Graphics :public Poit,public Line, public Circle //图集
 {
 private:
     int i;
 public:
     Graphics():Base(),Poit(),Line(),Circle(),i(0) {}
     void task(Base *p);
     void draw();
     void fun(Base *b)
     {
         if(i>=(int)MAX_OBJ_NUM)
         {             
             throw myerror("-----FULL-----\n");
         }
         Pd[i++]=b;
     }
     virtual ~Graphics()  ////这里应如何实现
     {
         for(;i;)
         {

文章评论

软件开发程序错误异常ExceptionCopyright © 2009-2015 MyException 版权所有