#include <cstdlib>
#include <iostream>
using namespace std;
class String{
     string name;
      public:
             friend class Person;
             String (string a){name=a;}
          //   friend ostream& operator<<(operator& o,const String& s){
                    return o<<s.name;
                    }
      };
class Age{
      int age;
      public:
            friend class Person;
             Age(int a){age=a;}
              friend ostream& operator<<(operator& o,const Age& a){
                     return o<<a.age;
                     }  
      };
class Date{
      int year,month,day;
      public:
       friend class Person;
      Date(int y,int m,int d){year=y; month=m; day=d;} 
       friend ostream& operator<<(operator& o,const Date& d){
              return o<<d.year<<'-'<<d.month<<'-'<<d.day;
              }
      };
class Person{
       String  a;
       Age b;
       Date c;
       public:
              Person( String& x,Age& y,Date& z){
                 a.name=x.name;  b.age=y.age;
                c.year=z.year; c.month=z.month; c.day=z.day;
                }
              /*  friend Person& operator<<(ostream& o,Person&n)
                {
                  return o<<n.namme<<ends<<n.age<<ends<<n.year<<'-'<<n.month<<'-'<<n.day;
                }*/
                friend ostream& operator<<(ostream& o,Person&n){
                       return o<<n.a<<ends<<n.b<<ends<<n.c;
                       }
                                            
      };
int main(int argc, char *argv[])
{ Person p1();  Person  p3("ZhangSan",Age(18),Date(1991,11,11)); cout<<p3<<endl;
 
    system("PAUSE");
    return EXIT_SUCCESS;
}

解决方案 »

  1.   


    #include <string>
    #include <iostream>
    using namespace std; class String
    {
    string name;
    public:
    friend class Person;
    String(){name="";}
    String (string a){name=a;}
    friend ostream& operator<<(ostream& o,const String& s)
    {
    return o<<s.name;
    }
    };  class Age
      {
      int age;
      public:
      friend class Person;
      Age(int a){age=a;}
      Age(){age = 0;}
      friend ostream& operator<<(ostream& o,const Age& a)
      {
      return o<<a.age;
      }   
      };  class Date{
      int year,month,day;
      public:
      Date(){year=0; month=0; day=0;}
      friend class Person;
      Date(int y,int m,int d){year=y; month=m; day=d;}  
      friend ostream& operator<<(ostream& o,const Date& d)
      {
      return o<<d.year<<'-'<<d.month<<'-'<<d.day;
      }
      };  class Person
      {
      String a;
      Age b;
      Date c;
      public:
      Person( String& x,Age& y,Date& z)
      {
      a.name=x.name; b.age=y.age;
      c.year=z.year; c.month=z.month; c.day=z.day;
      }
      friend ostream& operator<<(ostream& o,Person&n)
      {
      return o<<n.a<<endl<<n.b<<endl<<n.c;
      }   
      };  int main(int argc, char *argv[])
      { 
    Person p1();
    Person p3(String("ZhangSan"),Age(18),Date(1991,11,11)); cout<<p3<<endl;
      
    system("PAUSE");
     return EXIT_SUCCESS;
      }