标题:关于“ 一个类的对象作为另一个类的成员”,有错误,不明白为啥?
只看楼主
jiekevv520
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2015-3-17
结帖率:66.67%
已结贴  问题点数:1 回复次数:7 
关于“ 一个类的对象作为另一个类的成员”,有错误,不明白为啥?
// A.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
using namespace std;
class Point
{
private:
    int x,y;//私有成员变量坐标
public:
    Point();//无参构造函数
    Point(int a,int b);//有参
    void setXY(int a,int b);
    int getX();
    int getY();
};
{
   
}
void Point::setXY(int a,int b)
{    x=a;
    y=b;
}
int Point::getX() {return x;}
int Point::getY() {return y;}

class Rectangle
{
private:
    Point p1,p2,p3,p4;
public:
    Rectangle();
    Rectangle(Point one,Point two)
    {
        p1=one;
        p4=two;
        init();//调用函数
    }
    Rectangle(int x1,int y1,int x2,int y2)
    {
        p1.setXY(x1,y1);
        p4.setXY(x2,y2);
        init();//调用函数
    }
    void init()
    {
        p2.setXY(p4.getX(),p1.getY());
        p3.setXY(p1.getX(),p4.getY());
    }
    void printPoint()//打印四个点的函数
    {
        cout<<'('<<p1.getX()<<','<<p1.getY()<<')'<<endl;
        cout<<'('<<p2.getX()<<','<<p2.getY()<<')'<<endl;
        cout<<'('<<p3.getX()<<','<<p3.getY()<<')'<<endl;
        cout<<'('<<p4.getX()<<','<<p4.getY()<<')'<<endl;

    }
    int getArea()//求面积
    {
        int height,width,area;
        height=p1.getY()-p3.getY();//根据4个点坐标值计算长宽值
        width=p3.getX()-p4.getX();                  
        area=height*width;                  
        if( area>0)   
            return  area;
        else
            return  -area ;
    }
};

int main()
{
    Point p1(-15,56),p2(89,-10);
    Rectangle r1(p1,p2);//用两个点做参数,声明一个矩形对象r1
    Rectangle r2(1,5,5,1);//用两对 坐标点,声明一个矩形对象r2
    cout<<"四个点的坐标是:";
    r1.printPoint();
    cout<<"r1的面积是:"<<r1.getArea()<<endl;//输出两个对象的面积及4个顶点坐标。
    cout<<"四个点的坐标是:";
    r2.printPoint();
    cout<<"r2的面积是:"<<r2.getArea()<<endl;
    return 0;
}
搜索更多相关主题的帖子: private 应用程序 return public include 
2015-04-16 16:58
jiekevv520
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2015-3-17
得分:0 

历史如云,我只是抬头望过,历史如雷,我只是掩耳听过!
2015-04-16 17:02
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:1 
你函数定义在后面,在前面没有声明怎么调用?

一片落叶掉进了回忆的流年。
2015-04-16 18:57
jiekevv520
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2015-3-17
得分:0 
劳烦您指出一下,我现在有点乱,谢谢!

历史如云,我只是抬头望过,历史如雷,我只是掩耳听过!
2015-04-17 18:00
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:0 
init()函数使用在定义前面

一片落叶掉进了回忆的流年。
2015-04-18 13:18
jiekevv520
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2015-3-17
得分:0 
回复 3楼 诸葛欧阳
版主大人您好!我看我的那个作业都好几遍了,就是不会改,运行看错误也不明白啥意思,所以想有劳您给我改改,不知您方便吗?

历史如云,我只是抬头望过,历史如雷,我只是掩耳听过!
2015-04-19 21:51
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:0 
#include "Stdafx.h"
#include <iostream>
 using namespace std;
 class Point
 {
 private:
     int x,y;//私有成员变量坐标
public:
 Point(){};//无参构造函数,给出函数定义
  Point(int a,int b):x(a),y(b){};//要给出函数定义
    void setXY(int a,int b);
     int getX();
     int getY();
 };
 void Point::setXY(int a,int b)
 {    x=a;
     y=b;
 }
 int Point::getX() {return x;}
 int Point::getY() {return y;}
 class Rectangle
 {
 private:
     Point p1,p2,p3,p4;
 public:
     Rectangle();
     Rectangle(Point one,Point two)
     {
         p1=one;
         p4=two;
         init();//调用函数
    }
     Rectangle(int x1,int y1,int x2,int y2)
     {
         p1.setXY(x1,y1);
         p4.setXY(x2,y2);
         init();//调用函数
    }
     void init()
     {
         p2.setXY(p4.getX(),p1.getY());
         p3.setXY(p1.getX(),p4.getY());
     }
     void printPoint()//打印四个点的函数
    {
         cout<<'('<<p1.getX()<<','<<p1.getY()<<')'<<endl;
         cout<<'('<<p2.getX()<<','<<p2.getY()<<')'<<endl;
         cout<<'('<<p3.getX()<<','<<p3.getY()<<')'<<endl;
         cout<<'('<<p4.getX()<<','<<p4.getY()<<')'<<endl;
     }
     int getArea()//求面积
    {
         int height,width,area;
         height=p1.getY()-p3.getY();//根据4个点坐标值计算长宽值
        width=p3.getX()-p4.getX();                  
         area=height*width;                  
         if( area>0)   
             return  area;
         else
             return  -area ;
     }
 };
 int main()
 {
     Point p1(-15,56),p2(89,-10);
     Rectangle r1(p1,p2);//用两个点做参数,声明一个矩形对象r1
     Rectangle r2(1,5,5,1);//用两对 坐标点,声明一个矩形对象r2
     cout<<"四个点的坐标是:";
     r1.printPoint();
     cout<<"r1的面积是:"<<r1.getArea()<<endl;//输出两个对象的面积及4个顶点坐标。
    cout<<"四个点的坐标是:";
     r2.printPoint();
     cout<<"r2的面积是:"<<r2.getArea()<<endl;
     return 0;
 }

一片落叶掉进了回忆的流年。
2015-04-19 23:12
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:0 
你两个构造函数没给出定义,我给你改好了

一片落叶掉进了回忆的流年。
2015-04-19 23:14



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




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

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