标题:[求助]"类"
只看楼主
天使坠落的眼泪
Rank: 2
等 级:新手上路
威 望:5
帖 子:204
专家分:0
注 册:2006-5-16
 问题点数:0 回复次数:14 
[求助]"类"

#include<iostream.h>
class cshape
{
public:
cshape();
virtual int area()=0;
virtual void setshape(int number)=0;
~cshape();
private:
int number;
};

void cshape::setshape(int number)
{
switch(number)
{
case 1:cout<<"It is a triangle"<<endl;break;
case 2:cout<<"It is a crect"<<endl;break;
case 3:cout<<"It is a circle"<<endl;break;
};
}

class ctriangle:public cshape
{
public:
ctriangle();
float triangle(float het,float bot){
return ((float)(0.5*het*bot));
};
~ctriangle();
};
class ccrect:public cshape
{
public:
ccrect();
float crect(float size1,float size2){
return (size1*size2);
};
~ccrect();
};

class ccircle:public cshape
{
public:
ccircle();
double circle(float line){
return (3.14159*line);
};
~ccircle();
};

int main()
{
cshape *pshape;
ctriangle *a;
cout<<a->triangle(3,3)<<endl;
pshape->setshape(1);

ccrect *b;
cout<<b->crect(2,3)<<endl;

ccircle *c;
cout<<c->circle(3.5)<<endl;

cout<<a->triangle(3,3)+b->crect(2,3)+c->circle(3.5)<<endl;
return 0;

}

在这有一个运行错误问题,应该怎样改正呢.

搜索更多相关主题的帖子: class triangle private include 
2006-06-01 13:44
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

你的基类中的纯虚函数在派生类中没有重定义?


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-01 18:05
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 
没见过定义纯虚函数
更没见过调用纯虚函数的~!

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-01 18:09
天使坠落的眼泪
Rank: 2
等 级:新手上路
威 望:5
帖 子:204
专家分:0
注 册:2006-5-16
得分:0 
纯虚函数和函数的调用差不多的啊

樹欲靜而風不止... http://blog./seablue_xj
2006-06-01 18:17
天使坠落的眼泪
Rank: 2
等 级:新手上路
威 望:5
帖 子:204
专家分:0
注 册:2006-5-16
得分:0 
就是这个错误,不过是在程序运行的时候
no matching symbolic information found.

樹欲靜而風不止... http://blog./seablue_xj
2006-06-01 18:19
wangxiang
Rank: 2
等 级:新手上路
威 望:5
帖 子:376
专家分:0
注 册:2006-3-28
得分:0 

试试这个
#include<iostream>
using namespace std;
class cshape
{
public:

int area(){};
void setshape(int number);
virtual ~cshape()=0;
private:
int number;
};
cshape::~cshape() {}
void cshape::setshape(int number)
{
switch(number)
{
case 1:cout<<"It is a triangle"<<endl;break;
case 2:cout<<"It is a crect"<<endl;break;
case 3:cout<<"It is a circle"<<endl;break;
};

}

class ctriangle:public cshape
{
public:

float triangle(float het,float bot){
return ((float)(0.5*het*bot));
};


};
class ccrect:public cshape
{
public:

float crect(float size1,float size2){
return (size1*size2);
};


};

class ccircle:public cshape
{
public:

double circle(float line){
return (3.14159*line);
};


};

int main()
{
cshape *pshape = new ctriangle;

ctriangle *a = new ctriangle;
cout<<a->triangle(3,3)<<endl;
pshape->setshape(1);

ccrect *b = new ccrect;
cout<<b->crect(2,3)<<endl;

ccircle *c=new ccircle;
cout<<c->circle(3.5)<<endl;

cout<<a->triangle(3,3)+b->crect(2,3)+c->circle(3.5)<<endl;
delete a;
delete b;
delete c;
system("pause");
return 0;


}



2006-06-01 18:53
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
得分:0 
以下是引用wfpb在2006-6-1 18:09:00的发言:
没见过定义纯虚函数
更没见过调用纯虚函数的~!

必须为纯虚析构函数提供一个函数体


2006-06-01 19:13
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

必须在派生类中为纯虚函数提供一个函数体

这点我知道,只是在书上没见过调用纯虚函数的,都是看到有纯虚函数的类都是不被用的类,只被继承的,要用也都用的是派生类

[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-02 10:51
ooooo
Rank: 1
等 级:新手上路
威 望:1
帖 子:135
专家分:0
注 册:2005-6-24
得分:0 

必须为纯虚析构函数提供一个函数体


2006-06-02 11:23
wfpb
Rank: 6Rank: 6
等 级:贵宾
威 望:29
帖 子:2188
专家分:0
注 册:2006-4-2
得分:0 

他好象没用纯虚析构函数列


[glow=255,red,2]wfpb的部落格[/glow] 学习成为生活的重要组成部分!
2006-06-02 11:25



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-68998-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.120817 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved