template
class point2
{
T xx,yy;
public:
point2(T x,T y)
{
xx = x; //构造函数是用形参列表的值对类的成员变量赋值,你写反了。
yy = y; //同上
}
~point2() //如果析构函数不用执行什么特定的操作,可以不写,程序会自动调用系统默认的析构函数
{
}
float distance(point2 b) //1.成员函数也要有函数返回类型;2.形参应该为另外一个点,而不是类型为T的变量
{
float d;
d=sqrt((xx-b.xx)*(xx-b.xx)+(yy-b.yy)*(yy-b.yy)); //访问对象的成员变量,你写的b.x和b.y是错误的,x和y不是类的成员变量
return d;
}
void mid(point2 a,point2 b) //1.成员函数也要有函数返回类型;2.形参应该为另外一个点,而不是类型为T的变量
{
xx=(a.xx+b.xx)/2;
yy=(a.yy+b.yy)/2;
//return c; //不需要返回,已经直接将值写进了调用这个成员函数的对象里
}
void set(T x,T y ,int n=0)
{
xx=x; //用形参对成员变量赋值,你写反了
yy=y; //同上
}
void display()
{
cout<<"("<
};
void main()
{
point2
point2
a.set(1,2);
point2
c.mid(a,b);
c.display();
cout << a.distance(b) << endl;
a.display ();
}
我指出几个错误吧:(实话说,你的基础很差,还是先学基础,模板还是以后再学吧)
point2(T x,T y)
{
xx=x; // 反了
yy=y;
}
T distance(T b) // 返回值要设为T
point2 mid(point2 a, point2 b) // 这种类成员的写法很糟糕
{
point2 c;
xx=(a.xx+b.xx)/2;
yy=(a.yy+b.yy)/2;
return c;
}
void set(T x,T y ,int n=0)
{
xx=x; // 反了
yy=y;
}
基本差不多了