C++问题,求助,急!
C++问题,求助,急!下面是代码
#include<iostream.h>
class X; // A
class Y
{
int y;
public:
Y(int i)
{y=i;}
void Print(X &r);
};
class X
{
int x;
static int s;
public:
X(int i)
{x=i;}
void Print()
{cout<<"x="<<x<<','<<"s="<<s<<endl;}
friend void Y::Print(X &r);
};
int X::s=5;
void Y::Print(X &r)
{cout<<"x="<<r.x<<','<<"y="<<y<<endl;}
void main()
{
X m(2);
m.Print();
Y n(8);
n.Print(m);
}
一个小小的友元函数问题,如果我把A行删除掉的话,VC++会报错,是不是A行就类似于一个函数的原型声明呢?
还有一个问题就是如果我吧 类X 和类Y 的位置换一下,如下,VC++也会报错,求解释。
#include<iostream.h>
class Y;
class X
{
int x;
static int s;
public:
X(int i)
{x=i;}
void Print()
{cout<<"x="<<x<<','<<"s="<<s<<endl;}
friend void Y::Print(X &r);
};
class Y
{
int y;
public:
Y(int i)
{y=i;}
void Print(X &r);
};
int X::s=5;
void Y::Print(X &r)
{cout<<"x="<<r.x<<','<<"y="<<y<<endl;}
void main()
{
X m(2);
m.Print();
Y n(8);
n.Print(m);
}