ostream &operator<<(ostream &os,const TPoro &po){
if(po.EsVacio()==true){
os<<"()"<<endl;
}
&po->nos indica la direccion de memoria del objeto, no?Eso es. Eso se llama un parametro por referencia. Para empezar, puedes considerar que es igual que un puntero (pero veras que no es exactamente igual).
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é...Tienes que hacer el metodo const:
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;
//}
}