急求C++问题

来源:百度知道 编辑:UC知道 时间:2024/07/06 22:31:23
// Generic.h: interface for the CGeneric class.
#if !defined(AFX_GENERIC_H__089E6E2B_805F_4B64_881E_302CB21BD3AF__INCLUDED_)
#define AFX_GENERIC_H__089E6E2B_805F_4B64_881E_302CB21BD3AF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000
class CGraphicArea
{
// Attributes
private:
double fEdge[4]; //四条边长
int iType; //几何图形的类型0://三角形,1 ://矩形,2://梯形;…(略)
double fArea; //几何图形的面积
// Operation
private:
double Area(double a ,double b,double c);
double Area(double a,double b);
double Area(double a ,double b,double c,double d);
double Area(double a);

public:
void Register(int iType,double fEdge[4]); //注册,输入所有数据
double GetArea(); //调用各种重载函数获得几何图形面积
void print()
}

#endif

这里不对的嘛,成员函数要用类里面的变量怎么还要当参数传进来。。
void CGraphicArea::Register(int iType,double fEdge[4])
{ int i;
for(i=0;i<3;i++)
{
cin>>fEdge[0]>>fEdge[1]>>fEdge[2]>>fEdge[3];
}
就应该跟你在main里面写的一样,Register是没有参数的,就算有参数也不应该写成成员变量的名字

还有干吗要循环3次?cin这一句不就是一次性输入了4个数据吗?

还有一个问题就是你现在的Register根本没有给iType赋值,怎么知道到底是什么形状

还有就是类定义那里,public声明的void print()后面少个分号,类定义的最后也要加分号

三角形面积那个,算出来以后要retrun s,你直接写了个return

还有最根本的问题,Area这个函数干吗重载这么多次,重载要从参数个数来判断用哪个的,你在类里面声明的参数有1个到4个,梯形和长方开根本没办法区分的,而定义它们的时候参数一个都不写,根本不对的。

根本不需要重载,直接根据iType来选择公式就行了。

看你的写法,这样iType的值还有用么,不管是0123
都是一个GetArea(),而且类定义里面根本没有一个没参数GetArea

switch(iType)
{
case 0:GetArea();print();break;
case 1:GetArea();print();break;
case 2:GetArea();print();break;
case 3:GetArea();print();break;
}

给你改的:
class CGraphicArea
{
// Attributes
private: