+ -
当前位置:首页 → 问答吧 → 急。。。在线等。。。。类的构造函数的问题?

急。。。在线等。。。。类的构造函数的问题?

时间:2011-12-05

来源:互联网

如题,下面是写的代码,错误提示是error C2259: 'Circle' : cannot instantiate abstract class due to following members:see declaration of 'Circle'
Circle类的构造函数是:
class Circle : public Shape
{
public:
Circle(double a[],double b[]):Shape(a[0],b[0])
{
radius = a[1];
}
protected:
double radius;
};
Shape类的构造函数是:
class Shape
{
public:
Shape(double x, double y)
{
xPos = x ,yPos = y;
strcpy(col,"black");
}
protected:
int count;
double xPos,yPos;
char* col;
};
调用函数是:
void AboutCircle()
{
double x[2],y[1];
cout << "输入圆的圆心坐标" << endl;
cin >> x[0] >> y[0];
cout << "输入圆的半径" << endl;
cin >> x[1];
Circle a(x,y);
}
我想用AboutCircle()函数里的x,y数组来构造一个Circle类,该怎么办?
错误该怎么修改?谢谢!
小弟新人,望多多指教

作者: jifenkuaile   发布时间: 2011-12-05

C/C++ code

#include <iostream>
using namespace std;
class Shape
{
public:
    Shape(double x, double y)
    {
        xPos = x ,yPos = y;
        strcpy(col,"black");
    }
protected: 
    int count;
    double xPos,yPos;
    char* col;
};
class Circle : public Shape
{
public:
    Circle(double a[],double b[]):Shape(a[0],b[0])
    {
        radius = a[1];
    }
protected:
    double radius;
};//这里的分号错了!
//这里的分号错了!
void AboutCircle()
{
    double x[2],y[1];
    cout << "输入圆的圆心坐标" << endl;
    cin >> x[0] >> y[0];
    cout << "输入圆的半径" << endl;
    cin >> x[1];
    Circle a(x,y);
}

作者: shenxinji   发布时间: 2011-12-05

引用 1 楼 shenxinji 的回复:

C/C++ code

#include <iostream>
using namespace std;
class Shape
{
public:
Shape(double x, double y)
{
xPos = x ,yPos = y;
strcpy(col,"black");
}
protected:
int coun……

额。。。
对不住,那个分号是发帖子的时候加的,但是在原程序里是英文的分号,还有哪里错了呢?

作者: jifenkuaile   发布时间: 2011-12-05

引用 2 楼 jifenkuaile 的回复:

引用 1 楼 shenxinji 的回复:

C/C++ code

#include <iostream>
using namespace std;
class Shape
{
public:
Shape(double x, double y)
{
xPos = x ,yPos = y;
strcpy(col,"black");
}
protected:
int ……

完整的代码发上来

作者: shenxinji   发布时间: 2011-12-05

#include<iostream.h>
#include<string>
#include<math.h>
/********基类定义**************/
class Shape
{
public:
Shape(double x, double y)
{
xPos = x ,yPos = y;
strcpy(col,"black");
}
virtual void Getdate() = 0;
virtual void Move(double *a, double *b) = 0;
virtual void Draw(char *s) = 0;
virtual double Area() = 0;
protected:
int count;
double xPos,yPos;
char* col;
};
/********圆形类定义***********/

class Circle : public Shape
{
public:
Circle(double a[],double b[]):Shape(a[0],b[0])
{
radius = a[1];
}
void GetDate()
{
cout << "此时圆的圆心位于:(" << xPos << "," << yPos << ")点" << "\n" << "面积为:" << Area() << "\n颜色为:" << col << endl;
}
void Move(double *a, double *b)
{
xPos = a[0];
yPos = b[0];
}
void Draw(char *s)
{
strcpy(col , s);
cout << "圆的颜色已变为:" << col << endl;
}
double Area()
{
return 3.14 * radius * radius;
}
protected:
double radius;
};
Shape* AboutCircle()
{
double x[2],y[1];
cout << "输入圆的圆心坐标" << endl;
cin >> x[0] >> y[0];
cout << "输入圆的半径" << endl;
cin >> x[1];
Circle a(x,y);
}
int main()
{
char* s;
int num = 0;
int num2 = 0;
Shape* x;
while(num != 2)
{
cout << "选择要创建的图形" << endl;
cout << "1.创建圆" <<endl;
cout << "2.退出" <<endl;
cin >> num;
switch(num)
{
case 1:{x = AboutCircle();break;}
}
}
}

作者: jifenkuaile   发布时间: 2011-12-05

C/C++ code

#include<iostream.h>
#include<string>
#include<math.h>
/********基类定义**************/
class Shape
{
public:
 Shape(double x, double y)
 {
 xPos = x ,yPos = y;
 strcpy(col,"black");
 }
 virtual void Getdate() = 0;//基类是Getdate,派生类是GetDate,改一处即可
 virtual void Move(double *a, double *b) = 0;
 virtual void Draw(char *s) = 0;
 virtual double Area() = 0;
protected: 
int count;
 double xPos,yPos;
 char* col;
};
/********圆形类定义***********/

class Circle : public Shape
{
public:
 Circle(double a[],double b[]):Shape(a[0],b[0])
 {
 radius = a[1];
 }
 void GetDate()
 {
 cout << "此时圆的圆心位于:(" << xPos << "," << yPos << ")点" << "\n" << "面积为:" << Area() << "\n颜色为:" << col << endl;
 }
 void Move(double *a, double *b)
 {
 xPos = a[0];
 yPos = b[0];
 }
 void Draw(char *s)
 {
 strcpy(col , s);
 cout << "圆的颜色已变为:" << col << endl;
 }
 double Area()
 {
 return 3.14 * radius * radius;
 }
protected:
 double radius;
};
Shape* AboutCircle()
{
 double x[2],y[1];
 cout << "输入圆的圆心坐标" << endl;
 cin >> x[0] >> y[0];
 cout << "输入圆的半径" << endl;
 cin >> x[1];
 Circle a(x,y);
}
int main()
{
 char* s;
 int num = 0;
 int num2 = 0;
 Shape* x;
 while(num != 2)
 {
 cout << "选择要创建的图形" << endl;
 cout << "1.创建圆" <<endl;
 cout << "2.退出" <<endl;
 cin >> num;
 switch(num)
 {
 case 1:{x = AboutCircle();break;}
 }
 }
}

作者: shenxinji   发布时间: 2011-12-05

还有你的Shape* AboutCircle()需要一个返回值或者直接改成void类型

作者: shenxinji   发布时间: 2011-12-05

热门下载

更多