como puedo implementar clases amigas y el puntero this en este código, es una agenda también tengo mucho código innecesario y que no utilizo.
Código
#include<iostream> #include<stdlib.h> #include<stdio.h> #include<conio.h> #include<iomanip> using namespace std; char nombre[500000][500]; int Edad[30]; int Mat[230]; int Tel[30]; int bucle; //Agenda 2 char nombreA1[500000][500]; int EdadA1[30]; int MatA1[230]; int TelA1[30]; int bucleA1,hj; class Agenda { public: Agenda() { cout<<"\n\t->Constructor"<<endl; } ~Agenda() { cout<<"\n\t->Destructor"<<endl; } Agenda &establecehora( int ); void Nombre(char a); int Matricula(int); int Edad(int); int Tel(int); friend class Agenda1; void convMayusc(char *s); void Inicial(); private: friend void convMayusc(char *s); int hora; }; class Agenda1 { public: Agenda1() { } void convMayusc(char *s); void estableceX(Agenda &, int); }User[10]; void Agenda1::convMayusc(char *s) { while(*s != '\0') { if(*s >= 'a' && *s <= 'z'){ *s-=32; } ++s; } } int Agenda::Matricula(int x) { cout<<"#"<<Mat<<endl; } void Agenda::convMayusc(char *s) { while(*s != '\0') { if(*s >= 'a' && *s <= 'z'){ *s-=32; } ++s; } } Agenda &Agenda::establecehora( int h ) { hj=24; hora = ( h >= 0 && h < 50 ) ? h : 0; return *this; } Agenda h; void Inicial() { for(int i=0;i<bucle;i++) { cout<<"\n\tUsuario["<<i+1<<"]"<<endl; cout<<"\n\t["<<i+1<<"]-Nombre completo "; gets(nombre[i]); gets(nombre[i]); h.convMayusc(nombre[i]); cout<<"\n\t["<<i+1<<"]-Edad "; cin>>Edad[i]; cout<<"\n\t["<<i+1<<"]-Matricula "; cin>>Mat[i]; cout<<"\n\t["<<i+1<<"]-Telefono "; cin>>Tel[i]; } } void Mostrar() { char c=219; for( int i=0;i<bucle;i++) { cout<<"Nombre: "<<nombre[i]<<endl; cout<<"Edad: "<<Edad[i]<<endl; cout<<"Matricula: #"<<Mat[i]<<endl; cout<<"Telefono: "<<Tel[i]<<endl<<endl; for(int j=0;j<40;j++) { cout<<c<<" "; } } } void newArray() { Agenda1 Object; for(int j=0;j<bucleA1;j++) { cout<<"\n\tUsuario["<<j+1<<"]"<<endl; cout<<"\n\t["<<j+1<<"]-Nombre completo "; gets(nombreA1[j]); gets(nombreA1[j]); Object.convMayusc(nombreA1[j]); cout<<"\n\t["<<j+1<<"]-Edad "; cin>>EdadA1[j]; cout<<"\n\t["<<j+1<<"]-Matricula "; cin>>MatA1[j]; cout<<"\n\t["<<j+1<<"]-Telefono "; cin>>TelA1[j]; } } void newArrayPrint() { char c=219; for(int j=0;j<bucle;j++) { cout<<"Nombre: "<<nombreA1[j]<<endl; cout<<"Edad: "<<EdadA1[j]<<endl; cout<<"Matricula: #"<<MatA1[j]<<endl; cout<<"Telefono: "<<TelA1[j]<<endl<<endl; for(int j=0;j<40;j++) { cout<<c<<" "; } } } void Search() { int mat1,cont; cout<<"\n\tIngresa Nombre o Matricula o numero de tel. a buscar "; cin>>mat1; for(int i=0;i<bucle;i++) { if( mat1==Mat[i] || mat1==Tel[i] || mat1==nombre [i][500] ) { cout<<"Nombre: "<<nombre[i]<<endl; cout<<"Edad: "<<Edad[i]<<endl; cout<<"Matricula: #"<<Mat[i]<<endl; cout<<"Telefono: "<<Tel[i]<<endl<<endl; cont++; } if( mat1==MatA1[i] || mat1==TelA1[i] || mat1==nombreA1 [i][500] ) { cout<<"Nombre: "<<nombreA1[i]<<endl; cout<<"Edad: "<<EdadA1[i]<<endl; cout<<"Matricula: #"<<MatA1[i]<<endl; cout<<"Telefono: "<<TelA1[i]<<endl<<endl; cont++; } else if(cont<1) { cout<<"\n\tNo se encontaron resultados en la base de datos"; cont=0; } } } void borrar() { for(int i=0;i<bucle+bucleA1;i++) { int *pointer; pointer = new int(Edad[i]); cout<< pointer<<endl;; delete pointer; } } int main() { Agenda Hora; int op,cont=1,op2; do{ Hora.establecehora(hj); cout<< setw(70)<<" Semptiembre "<<hj<<" 2015" <<endl; cout<<"\n\t1-Nueva entrada 2-Ver entradas 3-Salir "; cin>>op; cout<<endl; switch(op) { case 1: cout<<"\n\tCuantas entradas quieres ingresar "; cin>>bucle; Inicial(); break; case 2: Mostrar(); if(cont==2) { newArrayPrint(); } do{ cout<<"\n\t1-Buscar contacto 2-Nueva entrada 3-Continuar "; cin>>op2; switch(op2) { case 1: Search(); break; case 2: cont=1; cont++; cout<<"\n\tCuantas entradas quieres ingresar "; cin>>bucleA1; newArray(); //newArrayPrint(); break; } /*getch(); system("cls");*/ }while(op2!=3); break; case 3: borrar(); Mostrar(); cout<<"\n\tSaliendo"<<endl; break; } getch(); system("cls"); }while(op!=3); return 0; }