抄书的代码,通不过编译,求解
本帖最后由 付笑 于 2013-10-24 10:02 编辑代码如下:
#include<iostream>
#include<string>
using namespace std;
//声明类Point
class Point
{
public:
Point(float x=0,float y=0);
void setPoint(float,float);
float getX() const
{
return x;
}
float getY() const
{
return y;
}
friend ostream &operator<<(ostream &output,const Point &p);//重载运算符"<<"
protected:
float x,y;
};
//下面定义Point类的成员函数
//Point的构造函数
Point::Point(float a,float b)
{
x=a;
y=b;
}
//设置x和y的坐标值
void Point::setPoint(float a,float b)
{
x=a;
y=b;
}
//重载运算符"<<",使之能输出点的坐标
ostream &operator<<(ostream &output,const Point &p)
{
output<<"["<<p.x<<","<<p.y<<"]"<<endl;
return output;
}
int main()
{
return 0;
}
编译的时候错误如下:
error C2248: 'x' : cannot access protected member declared in class 'Point'
see declaration of 'x'
error C2248: 'y' : cannot access protected member declared in class 'Point'
: see declaration of 'y'
问题:类里面已经声明重载<<函数为友元了,编译的时候为什么还报这样的错啊
看了程序,没发现什么问题,你项目清理一下看看 应该没错误啊 随风听雨雪 发表于 2013-10-24 11:17 static/image/common/back.gif
应该没错误啊
我用VC6.0编译报错啊,是不是编译器的问题啊 苹果沃珂 发表于 2013-10-24 10:13 static/image/common/back.gif
看了程序,没发现什么问题,你项目清理一下看看
你用VC6.0能编译通过吗 本帖最后由 peterboboo 于 2013-10-24 23:17 编辑
苹果沃珂 发表于 2013-10-24 10:13 static/image/common/back.gif
看了程序,没发现什么问题,你项目清理一下看看
#include<iostream>
#include<string>
using namespace std;
//声明类Point
class Point
{
public:
Point(float x=0,float y=0);
void setPoint(float,float);
float getX() const
{
return x;
}
float getY() const
{
return y;
}
friend ostream &operator<<(ostream &output,const Point &p);//重载运算符"<<"
protected:
float x,y;
};
//下面定义Point类的成员函数
//Point的构造函数
Point::Point(float a,float b)
{
x=a;
y=b;
}
//设置x和y的坐标值
void Point::setPoint(float a,float b)
{
x=a;
y=b;
}
//重载运算符"<<",使之能输出点的坐标
ostream &operator<<(ostream &output,const Point &p)
{
output<<"["<<p.x<<","<<p.y<<"]"<<endl;
return output;
}
int main()
{
Point pt(200,300);
pt.setPoint(500,600);
cout<<pt<<endl;
return 0;
}
GCC、VC2010编译通过,也跑出结果了,没问题。怀疑你的代码忘记了friend关键字,把这个关键字去掉,可以得到和你一样的错误信息 'Point::x' : cannot access protected member declared in class 'Point‘
同上 楼上正解{:7_157:} x,y 的访问权限 是 protected ,改成 public 就可以了 {:1_1:}
页:
[1]