Programación General > C/C++
Consulta en clases
m0skit0:
No sé si no me explico bien o qué... Sigues mezclando implementaciones dentro y fuera de la clase.
Dentro de la clase:
--- Código: C++ ---matrix (int n){ size=test_matrix(n); }
Fuera de la clase:
--- Código: C++ ---int matrix :: test_matrix (int a){ if(a>MAX_SIZE){ cerr<<"Demasiados elementosn"; a=MAX_SIZE; } return a;} Además como te he comentado anteriormente, las llaves de cierre van a la misma altura que la sentencia que las abre, y lo que vaha dentro sólo va una tabulación más dentro, no hasta la llave (sobre todo si está al final de línea), es decir, este método anterior tiene que quedar como:
--- Código: C++ ---int matrix :: test_matrix (int a){ if(a>MAX_SIZE){ cerr<<"Demasiados elementosn"; a=MAX_SIZE; } return a;}
--- Cita de: "Checho360" ---es que si pongo algo en private luego no puedo acceder a ello desde otras partes del programa y entonces tendría que crear otra función para poder acceder a ella ?? es que no entiendo muy bien
--- Fin de la cita ---
Sí, así es. Eso en POO se llaman "getters" y "setters", que modifican los atributos privados mediante lo que se puede denominar una "interfaz", así puedes controlar asuntos como validaciones, rangos, etc...
Checho360:
--- Cita de: m0skit0 ---No sé si no me explico bien o qué... Sigues mezclando implementaciones dentro y fuera de la clase.
Dentro de la clase:
--- Código: C++ ---matrix (int n){ size=test_matrix(n); }
Fuera de la clase:
--- Código: C++ ---int matrix :: test_matrix (int a){ if(a>MAX_SIZE){ cerr<<"Demasiados elementosn"; a=MAX_SIZE; } return a;}
Pero como hago para darle el valor correspondiente a size con un programa externo ?? la unica forma que se me ocurre es esa que tengo ahí :S ; ah y por cierto esta tarde me pondré un poco con el private a ver que tal :P
Un saludo!!
--- Fin de la cita ---
m0skit0:
Yo no te digo que lo estés haciendo mal en cuanto a la funcionalidad, sino a la legibilidad y coherencia: que pongas la implementación del constructor fuera de la clase también :P
--- Código: C++ ---class matrix{public: int size; double s[MAX_SIZE]; matrix (int n); ~matrix(); int test_matrix (int a); matrix scan_matrix (void); matrix operator + (matrix A); void print_matrix (void);}; matrix::matrix(int n){ size=test_matrix(n);} En cuanto a lo del private, también deben ser privados los métodos que no vayan a ser usados por clases externas.
Checho360:
Bueno pues muchas gracias, ya cambio yo ahora como tu dices. Por cierto, tengo por ahí otro post con un error a la hora de poner el constructor copia, quizas me podrias echar un cable ejejje :P
Un saludo!!
m0skit0:
En tu hilo dices que ya lo has corregido <_<
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa