#include
#include
class point
{
public:
point(float a,float b):x(a),y(b){}
point(){x=0;y=0;}
void setpoint(float a,float b)
{
x=a;
y=b;
}
float getx() const
{return x;}
float gety() const
{return y;}
friend ostream& operator<<(ostream&,const point&);
private:
float x,y;
};
ostream& operator<<(ostream& output,const point& p)
{
output<<"point:";
output<<'[';
output<output<<',';
output<output<<']'< return output;
}
int main()
{
point p(3.5f,4.3f),q;
cout<q.setpoint(2.2f,7.9f);
cout<cout< return 0;
}
如果你使用是VC6编译器,需要把
#include
using namespace std;
换成#include
否则不支持有元
另外程序中也有问题。
错误:
重载操作符“<<”后,使用"<<"普通功能和你重载功能的语句要分开来写,如output<<'['<
output<<'[';
output<
output<<',';
output<
output<<']'< 否则编译器无法统一 警告: 系统中默认的小数都是双精度类型的,如果要使用单精度类型,需要标明,如3.14是双精度类型,而3.14f就是单精度类型的,详细的更改见上边的程序,希望对你有帮助
操作符<<重载的时候,不能访问到p.x和p.y,要把x,y放到类的public里面.
#include
#include
using namespace std;
class point {
public:
point(float a, float b) :x(a), y(b){}
point()
{
x = 0; y = 0;
}
void setpoint(float a, float b)
{
x = a; y = b;
}
float getx() const{ return x; }
float gety() const{ return y; }
friend ostream& operator<<(ostream&, const point&);
//protected:
float x, y;
};
ostream& operator<<(ostream& output, point& p)
{
output << "point:";
output << '[' << p.x << ',' << p.y << ']' << endl;
return output;
}
int main(){
point p(3.5, 4.3), q;
cout << p;
q.setpoint(2.2, 7.9);
cout << q.getx() << endl;
cout << q.gety() << endl;
return 0;
}
类的对象只能访问他的公有成员,私有成员和保护成员不能直接访问。