Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - CalgaryCorpus

#101
Para los operadores, considera el tipo que esta a la izquierda del operador. Son distintos cuando usas << y cuando usas ==

ostream << clase

clase == clase

Donde defines la funcion o metodo, depende del tipo de la izquierda del operador.

El primero de ellos se define fuera de la clase, el segundo dentro de la misma.

Los metodos al interior de la clase no necesitan especificar el operando de la izquierda del operador, pues se sobreentiende que se trata del objeto donde se ejecuta el metodo. Solo requieren especificar 1 parametro, el de la derecha del operador.

Cuando pones la firma de la funcion dentro de la clase, sin poner friend, el compilador te va reclamar no porque no pusiste "friend", te va a reclamar porque al ponerla dentro de la clase, es un metodo como el resto y el operator<< solo puede recibir 1 parametro y le estas pasando 2.

#102
Hay un error en lo especificado antes:

En el codigo que preguntas

Código (cpp) [Seleccionar]


int * sumar(int a, int b){
    int * psuma = new int;
    *psuma = a + b;
    return psuma;

}

int main (){
    int a = 5;
    int b = 10;

    int * punteroSuma = new int;    //modificado el nombre
    punteroSuma = sumar(a, b);
   
    delete punteroSuma;      //aqui se elimina psuma, punteroSuma o ambos?
}



al asignar punteroSuma el resultado de sumar(), se pierde el valor que habias asignado antes.
Esa memoria no la estas liberando, ni se liberara en el delete del final.
#103
Hay un error en lo especificado antes:

En este codigo,

Código (cpp) [Seleccionar]


int * sumar(int a, int b){
    int * psuma = new int;
    *psuma = a + b;
    return psuma;

}

int main (){
    int a = 5;
    int b = 10;

    int * punteroSuma = new int;    //modificado el nombre
    punteroSuma = sumar(a, b);
   
    delete punteroSuma;      //aqui se elimina psuma, punteroSuma o ambos?
}


#104
Hay otras situaciones en que los punteros tambien son utiles y muestran su poderio.

Los punteros pueden guardar direcciones de memoria de otras zonas que no has pedido explicitamente, y leer o escribir alli informacion o datos que tu quieras.

Las funciones de tu programa tambien tienen direcciones de memoria y un puntero puede guardar esa direccion y luego ir e invocar esa funcion. Puedes usar esto para, en una clase por ejemplo, hacer que un codigo sirva para multiples propositos, pues la funcionalidad se "inyecta" hacia otra, parecido al patron de dicen~o Strategy.
No es necesario realmente una clase para este uso, una funcion tambien puede recibir como parametro a un puntero a una funcion, para hacer algo parecido a lo mencionado previamente, por ejemplo, la funcion qsort recibe como tercer parametro la direccion de memoria de una funcion
e.g. http://www.cplusplus.com/reference/cstdlib/qsort/
#105
Programación C/C++ / Re: Programar lista
8 Febrero 2019, 16:55 PM
Muestra lo que llevas, también te sugiero buscar el tópico en Google, lo que quieres hacer es un clásico.
#106
Programación C/C++ / Re: Programar lista
8 Febrero 2019, 15:24 PM
Y cuál es tu pregunta.especifica?
#107
Templates! Es una manera que inventaron para no repetir código. Si no existiera este truco, habría tantas clases escritas como tipos.

Es similar a los arreglos, que pueden ser arreglos de enteros o de floats o de Tu clase, pero en vez de arreglos son clases que usan un tipo en varias partes.

Sugiero revises el material de Templates.
#108
No sirve escapar los paréntesis?
#109
Los if else if else evaluan TODAS las condiciones, si todas ellas son falsas, y esta seguidilla de evaluaciones se detiene cuando alguna de las condiciones es verdadera.
El codigo que tienes ademas de evaluar todas las condiciones SIEMPRE, cambia los valores y por lo tanto afecta el valor de verdad de las condiciones que se evaluan.
#110
Te sugiero que pongas else entre los ifs porque los nuevos valores son considerados en los siguientes ifs, si lo dejas así.