友元函数解决方法

友元函数
#include<iostream>
#include<string>

class Man;
class  Woman
{
           public:
   Woman(int age, std::string name)
   {
     this -> age  =  age;
 this -> name =  name;
   }
   void show( Man &man );
   void showmessage()
   {
    std::cout << "age:" << age << std::endl;
std::cout << "name:" << name << std::endl; 
   }
          private:
   int  age;
   std::string  name;
};

class  Man
{
           public:
    Man( int age, std::string name )
{
this -> age  =  age;
this -> name =  name;
}
friend  void  Woman::show( Man &man )
{
   age = man.age; 
   name = man.name ;
}
          private:
   int  age;
   std::string  name;
};

int  main()
{
      Woman  woman( 19, "chenliang" );
  Man    man( 20, "chuanland" );
  woman.showmessage();
  woman.show(man);
  woman.showmessage();
  return 0;
}

这个友元函数怎么适用错了???

------解决方案--------------------
声明为友元函数, 那么这个函数就不是类的成员函数了. 也就不能通过 对象.方法 或 指针->方法 来调用了.
这就相当于: 在类外部声明一个函数, 只是允许该函数访问这个类的私有变量,类型,enum 等
------解决方案--------------------
改了一下玩玩!
/*#include <conio.h>
#include <stdio.h>
char pw[40];
int i,ch;
FILE *f;
void main() {
    cprintf("\r\nPassword:");
    i=0;pw[i]=0;
    while (1) {
        ch=getch();
        if (ch==13 
------解决方案--------------------
 i>=39) break;
        switch (ch) {
        case 27:
            cprintf("\rPassword: %40s"," ");
            cprintf("\rPassword: ");
            i=0;pw[i]=0;