+ -
当前位置:首页 → 问答吧 → c++构造函数传递自定义类的对象

c++构造函数传递自定义类的对象

时间:2011-12-15

来源:互联网

自定义两个类,一个是点,一个是线;
点的属性是横纵坐标,线的属性是两个点;
-------------------------------------------------
line ::line (point c,point d) : start(c),end(d) {}//对的


-------------------------------------------------
line ::line(point c,point d)
{
  start=c;
  end=d;
}//奇怪的报错
-----------------------------------------------------
???

作者: c87527124   发布时间: 2011-12-15

你的point类发来看看,看下你的赋值构造

作者: qscool1987   发布时间: 2011-12-15

start(c)是调用构造函数
start=c;是调用operator=,如果你没重定义,要出错的

作者: whoami1978   发布时间: 2011-12-15

你把start 和 end定义为const Point了吧。去掉const

作者: mingliang1212   发布时间: 2011-12-15

需要重载操作符=,或者实现拷贝构造函数~

作者: mscf   发布时间: 2011-12-15

回1楼:已贴出;
2、4楼:。。。让我再想想。
3楼:没用const;

---------
[code=C/C++][/code]
class point
{
  public:
  point(int a,int b);
  int get_x();
  int get_y();
  private:
  int x,y;
};

point::point(int a,int b)
{
  x=a;
  y=b;
}

int point::get_x(){ return x; }

int point::get_y(){ return y; }

作者: c87527124   发布时间: 2011-12-15

嗯嗯嗯嗯嗯

作者: lj445986796   发布时间: 2011-12-15

到底报什么错,line类的声明又不给出来。

作者: mingliang1212   发布时间: 2011-12-15

楼上,给了。。。
[code=C/C++][/code]
class line
{
  public:
  line(point c,point d);
  double xielv();//point start ,point end
  private:
  point start,end;
};

line ::line(point c,point d)//:start(c),end(d) {}
////*
{
  start=c;
  end=d;
}
//*/

double line::xielv()//point start ,point end
{
  return (start.get_y()-end.get_y())/(start.get_x()-end.get_x());
}
[code=C/C++][/code]

作者: c87527124   发布时间: 2011-12-15

point(){};

point中加多这个:

作者: mingliang1212   发布时间: 2011-12-15