| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1187 人关注过本帖, 1 人收藏
标题:[求助]请教大家一个问题
只看楼主 加入收藏
modelmomo
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-10-22
收藏(1)
 问题点数:0 回复次数:8 
[求助]请教大家一个问题
定义一个抽象类CShape,包含纯虚函数Area()(用于计算面积)和SetData()(用于重设形状大小),然后派生出三角形Ctriangle类, 矩形CRect 类,圆CCircle类,分别求其面积。最后定义一个CArea类,计算几个形状的面积之和,各形状的数据通过CArea类构造函数或成员函数来设置,编写一个完整的程序。

我的问题在于CArea类,题目中要求定义一个CArea类并且它的构造函数或者成员可以设置其他几个类的成员变量。我想问一下怎么实现这一过程。想了很久,没想出来,高手勿批评我不加思考就像要答案。最后我承认这是老师布置的作业
搜索更多相关主题的帖子: CArea 函数 定义 形状 变量 
2007-04-19 07:58
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
class CArea{
public:
CArea(//参数传递几个图形类);
//////////
//////////
private:
//声明图形类作为成员,接受传递的实参
}

Fight  to win  or  die...
2007-04-19 10:02
modelmomo
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-10-22
收藏
得分:0 

那如果我要有两个CCircle类实例对象,一个CRect类实例对象。。。
像这样的情况你怎么用CArea的构造函数?

2007-04-19 10:18
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
就在构造函数里为每个图形类加一个表示个数的型参。

Fight  to win  or  die...
2007-04-19 10:27
modelmomo
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-10-22
收藏
得分:0 
不懂怎么实现,具体一点,谢谢
2007-04-19 10:35
aipb2007
Rank: 8Rank: 8
来 自:CQU
等 级:贵宾
威 望:40
帖 子:2879
专家分:7
注 册:2007-3-18
收藏
得分:0 
class CArea{
public:
CArea(//参数增加3个图形类的个数int cir = 0,int rec = 0,int tri = 0);
//////////
void compute(); //根据传递图形的个数计算面积和
//如CArea sum(……//1,2);
//sum.compute();就计算出1个圆,2个矩形的面积和
//////////
private:
//声明图形类作为成员,接受传递的实参
int nbr_cir,nbr_rec,nbr_tri; //增加的数据成员
}

Fight  to win  or  die...
2007-04-19 10:55
modelmomo
Rank: 1
等 级:新手上路
帖 子:28
专家分:0
注 册:2006-10-22
收藏
得分:0 
噗。。。。
还是不明白
主要还是CArea的构造函数问题要符合题目要求不懂怎么实现
楼上要是可以的话能不能把这个完整的程序写出来。。。
谢谢俄
2007-04-19 11:50
游乐园
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:671
专家分:0
注 册:2006-11-1
收藏
得分:0 

#include<iostream>
using namespace std;

class Cshape
{
public:
virtual float Area()=0;
//virtual void SetData(int,int)=0;
};

class CTriangle :public Cshape
{
int vect;
public:
CTriangle(int v):vect(v) {}
float Area() {return vect*1.732/4;}
//void SetData(int,int) {}

};

class CRect:public Cshape
{
int length,height;
public:
CRect(int l,int h):length(l),height(h) {}
float Area() {return length*height;}
//void SetData(int,int){}
};

class CCircle:public Cshape
{
int radius;
public:
CCircle(int r):radius(r) {}
float Area() {return 3.14*radius*radius;}
//void SetData(int,int) {}
};

class Area
{
CTriangle t;
CRect r;
CCircle c;
public:
Area(int v,int l,int h,int r):t(v),r(l,h),c(r) {}
float sum() {return t.Area()+r.Area()+c.Area();}
};

int main()
{
Area a(10,20,30,5);
cout<<a.sum()<<endl;
return 0;
}


unicorn-h.spaces. ◇◆ sava-scratch.spaces.
2007-04-19 14:05
song4
Rank: 7Rank: 7Rank: 7
等 级:贵宾
威 望:38
帖 子:1533
专家分:4
注 册:2006-3-25
收藏
得分:0 
Area是FRIEND不可以么
里面有一个重载的函数用来改变参数
然后一个函数用虚函数实现
到时用参数确定操作对象
来完成面积运算

嵌入式 ARM 单片机 驱动 RT操作系统 J2ME LINUX  Symbian C C++ 数据结构 JAVA Oracle 设计模式 软件工程 JSP
2007-04-19 20:18
快速回复:[求助]请教大家一个问题
数据加载中...
 
   



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

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