为什么定义了友元函数,在重载时还是访问不了类的私有成员

为何定义了友元函数,在重载时还是访问不了类的私有成员
代码如下;
#include <iostream>
#include <string>
using namespace std;
class Person
{
public:
Person(){}
Person(string na, int nu)
{
name=na;
num=nu;
}
friend bool operator==(const Person&, const Person&);
private:
string name;
int num;
};
bool operator==(const Person& p1, const Person& p2)
{
return p1.name==p2.name&&p1.num==p2.num;
}
int main()
{
return 0;
}
这是重载==操作符的 ,还有重载输入输出操作符的时候也是碰到了同样的情况。。。。。。

------解决方案--------------------
VC6.0对友元的支持不好,这是一个经典BUG
这里是解决办法
http://www.cnblogs.com/xinjun/archive/2010/07/19/1780902.html
当然最好的解决办法是抛弃VC6.0