帮忙看一个C++程序措在哪..关于友元的

来源:百度知道 编辑:UC知道 时间:2024/06/01 20:18:15
#include <iostream.h>
class X
{
public:
friend class Y;
void Set(int i)
{
x = i;
}
void display()
{
cout<<"x ="<<x<<"y ="<<y<<endl;
}
private:
int x;
static int y;
};

class Y
{
public:
Y(int i, int j)
{
a.x = i;
X::y = j;
}
void display_X()
{
cout<<"x ="<<a.x<<"y="<<X::y<<endl;
}
private:
X a;
};

void main()
{
Y c(33, 44);
c.display_X();
}

错误在X的静态成员变量y处,

    在C++类中的static成员变量是一个特殊的存在,它不属于对象,而是类的一部分。

    因为static成员变量是类的一部分,所以程序可以在还没有诞生任何对象的时候就处理此种成员变量.关键是你必须初始化它。于是,你应该在X类的后面写上一句:

     int X::y=0;//初始化静态成员变量