标题:在学习C++时,敲的一个书上的代码,但是结果有误,求大神指点
只看楼主
gsw123456
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-5-15
结帖率:100%
已结贴  问题点数:20 回复次数:9 
在学习C++时,敲的一个书上的代码,但是结果有误,求大神指点
#include <iostream>
#include <cmath>
using namespace std;
class Point
{
public:
    Point(int xx=0,int yy=0)
    {
        x=xx;
        y=yy;
    }
    Point(Point &p);//就是利用Point p来给其赋初值
    int getX() {return x;}
    int getY() {return y;}
private:
    int x,y;
};

Point::Point(Point &p)
{
    x=p.x;
    y=p.y;
    cout << "Calling the copy constructor of Point " << endl;
}

//类的组合
class Line
{
public:
    Line(Point xp1,Point xp2);
    Line(Line &1);
    double getLen() {return len;}
private:
    Point p1,p2;
    double len;
};

//组合类的构造函数
Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2)
{
    cout << "Calling constructor of Line" << endl;
    double x=static_cast<double>(p1.getX()-p2.getX());
    double y=static_cast<double>(p1.getY()-p2.getY());
    len=sqrt(x*x+y*y);
}

//组合类的复制构造函数
Line::Line(Line &1):p1(1.p1),p2(1.p2)
{
    cout << "Calling the copy constructor of Line " << endl;
    len=1.len;
}

//主函数
int main()
{
    Point myp1(1,1),myp2(4,5);
    Line line(myp1,myp2);
    Line line2(line);
    cout << "The length of the line is: ";
    cout << line .getLen() << endl;
    cout << "The length of the line2 is:";
    cout << line2.getLen() << endl;
    return 0;
}
怎么有一个浮点后缀常熟的错误提醒???
求大神解释
搜索更多相关主题的帖子: private include public return 
2015-05-17 21:16
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:7 
Line类里面对len成员变量并没有给出定义

一片落叶掉进了回忆的流年。
2015-05-17 21:20
gsw123456
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-5-15
得分:0 
??有定义len啊。double len??
2015-05-17 21:24
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:0 
我说的是你没有给它赋予实际意义,你只是定义的这个变量,但没指明它表示什么

一片落叶掉进了回忆的流年。
2015-05-17 21:28
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:0 
我猜你想用它表示程度,但你并没有赋予它边长值

一片落叶掉进了回忆的流年。
2015-05-17 21:28
gsw123456
Rank: 1
等 级:新手上路
帖 子:3
专家分:0
注 册:2015-5-15
得分:0 
#include <iostream>
#include <cmath>
using namespace std;
class Point
{
public:
    Point(int xx=0,int yy=0)
    {
        x=xx;
        y=yy;
    }
    Point(Point &p);//就是利用Point p来给其赋初值
    int getX() {return x;}
    int getY() {return y;}
private:
    int x,y;
};

Point::Point(Point &p)
{
    x=p.x;
    y=p.y;
    cout << "Calling the copy constructor of Point " << endl;
}

//类的组合
class Line
{
public:
    Line(Point xp1,Point xp2);
    Line(Line &l);
    double getLen() {return len;}
private:
    Point p1,p2;
    double len;
};

//组合类的构造函数
Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2)
{
    cout << "Calling constructor of Line" << endl;
    double x=static_cast<double>(p1.getX()-p2.getX());
    double y=static_cast<double>(p1.getY()-p2.getY());
    len=sqrt(x*x+y*y);
}

//组合类的复制构造函数
Line::Line (Line &l): p1(l.p1), p2(l.p2)
{
    cout << "Calling the copy constructor of Line " << endl;
    len=l.len;
}

//主函数
int main()
{
    Point myp1(1,1),myp2(4,5);
    Line line(myp1,myp2);
    Line line2(line);
    cout << "The length of the line is: ";
    cout << line .getLen() << endl;
    cout << "The length of the line2 is:";
    cout << line2.getLen() << endl;
    return 0;
}
不过我的和这个书本提供代码,一样的,为啥他的就能够运行??
谢谢了,大神
2015-05-17 21:36
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
得分:0 
这里面len有没有复制也没有默认的值应该输出乱码,你再好好看看是不是少了一个函数

一片落叶掉进了回忆的流年。
2015-05-17 21:52
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
得分:7 
//组合类的复制构造函数
Line::Line(Line &1):p1(1.p1),p2(1.p2)
{
    cout << "Calling the copy constructor of Line " << endl;
    len=1.len;
}
把它的后一条语句改成len=1.getlen();试试
2015-05-18 13:42
hzj199603
Rank: 2
来 自:南京
等 级:论坛游民
帖 子:18
专家分:32
注 册:2015-3-29
得分:7 
回复 楼主 gsw123456
程序代码:
#include <iostream>
#include <cmath>
using namespace std;
class Point
{
public:
    Point(int xx=0,int yy=0)
    {
        x=xx;
        y=yy;
    }
    Point(Point &p);//就是利用Point p来给其赋初值
    int getX() {return x;}
    int getY() {return y;}
private:
    int x,y;
};

Point::Point(Point &p)
{
    x=p.x;
    y=p.y;
    cout << "Calling the copy constructor of Point " << endl;
}

//类的组合
class Line
{
public:
    Line(Point xp1,Point xp2);
    Line(Line &l);
    double getLen() {return len;}
private:
    Point p1,p2;
    double len;
};

//组合类的构造函数
Line::Line(Point xp1,Point xp2):p1(xp1),p2(xp2)
{
    cout << "Calling constructor of Line" << endl;
    double x=static_cast<double>(p1.getX()-p2.getX());
    double y=static_cast<double>(p1.getY()-p2.getY());
    len=sqrt(x*x+y*y);
}

//组合类的复制构造函数
Line::Line(Line &l):p1(l.p1),p2(l.p2)//不是1,是小写L
{
    cout << "Calling the copy constructor of Line " << endl;
    len=l.len;
}

//主函数
int main()
{
    Point myp1(1,1),myp2(4,5);
    Line line(myp1,myp2);
    Line line2(line);
    cout << "The length of the line is: ";
    cout << line .getLen() << endl;
    cout << "The length of the line2 is:";
    cout << line2.getLen() << endl;
    return 0;
}
2015-05-18 16:59
文心边城
Rank: 2
等 级:论坛游民
威 望:2
帖 子:98
专家分:67
注 册:2005-12-13
得分:0 
没发现你改了哪

会写c c++ java php JS AS vb python
2015-05-25 00:07



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




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

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