ostream &operator<<(ostream &os,const TPoro &po){ if(po.EsVacio()==true){ os<<"()"<<endl; }
&po->nos indica la direccion de memoria del objeto, no?
si yo tengo un metodo declarado en la parte publica que se llama EsVacio, que devuelve un bool si el objeto está vacio, me pueden decir porque me da error esto? y sobre todo como lo tengo que expresar, pero no decirme la solucion y ya está..sino que quiero entender el porqué...
Si en el constructor estas haciendo simplemente una asignacion a un puntero a char entonces esta claro, tendras un puntero nulo y si lo desreferencias dara una excepcion ... podes pasale una cadena vacia "" en lugar de NULL ... o tener un buffer estatico ... hay varias formas de solucionarlo digamos.
TPoro::TPoro(int px,int py,double vol,char *col){ int tam; x=px; y=py; volumen=vol; color=new char[strlen(col)+1]; if(color==NULL){ return; } //if(color !=NULL){ strcpy(color,col); //} //else{ // return; //}}TPoro::TPoro(const TPoro &po){ //int tam=strlen(po.color)+1;//saco el tamaño de la cadena de caracteres x=po.x; y=po.y; volumen=po.volumen; color=new char[strlen(po.color)+1]; if(color ==NULL){ return; //strcpy(color,po.color); } strcpy(color,po.color); //else{ // return; //}}