| |||
Respuesta: Duda sobre clases La cosa sería que me dijesen como escribir para usar el metodo int VectorDinamico :: NCasillas(void) {return(numcasillas);} en otro metodo de la misma clase. Por favor, ayudenme, estoy atascado en eso. |
| |||
Respuesta: Duda sobre clases
Código C++:
Ver original
Código C++:
Ver original |
| |||
Respuesta: Duda sobre clases "...¿Como utilizo una función de una clase dentro de otra?..." "...como escribir para usar el metodo int VectorDinamico :: NCasillas(void) {return(numcasillas);} en otro metodo de la misma clase..." Creo que estas preguntando dos cosas distintas: un metodo de la misma clase puede acceder a otro metodo de la misma clase aun cuando sea privado o protegido. Pero por contra si quieres llamar a un metodo miembro de una clase desde una funcion miembro de otra clase deben ser metodos estaticos o bien una clase debe tener acceso a la otra o bien puedes usar un puntero a la otra clase tal como me respondí a mi mismo en http://www.forosdelweb.com/f96/punte...clase-1026816/ Saludos vosk |
| |||
Respuesta: Duda sobre clases Ok, entonces vuenvo a elaborar mi pregunta, ¿Cómo utilizo un metodo de una clase dentro de otro de la misma clase? Segun tu respuesta "un metodo de la misma clase puede acceder a otro metodo de la misma clase aun cuando sea privado o protegido" se pueden usar un metodo dentro de otro sin problemas pero yo estoy intentando hacer esto: int VectorDinamico :: NCasillas () { return (numcasillas); } void VectorDinamico :: PintaVector(){ } |
| |||
Respuesta: Duda sobre clases A ver, es dificil de explicar ya que no es un error al compilar. Pero consiste basicamente en que relleno el vector con Escribirvector() como puedes ver arriba pero cuando lo muestro con pintavector() sale un numero ilimitado de "0" u otro numero dependiendo del que se introduzca en el constructor. Pero ya he confirmado que el error esta en el int n= NCasillas(), asi que no te preocupes por los demas metodos. |
| |||
Respuesta: Duda sobre clases Pues a mi no me da ningun error
Código:
class VectorDinamico { private: int numcasillas; public: int NCasillas (); void PintaVector(); };
Código:
(ojo, no he copiado lo que no afecta al sistema)int VectorDinamico :: NCasillas (){ return (numcasillas); } void VectorDinamico :: PintaVector(){ int n = NCasillas(); for (int i=0;i<n;i++) cout << vector[i] << endl; } Tenemos que: 'NCasillas' es un metodo publico miembro de la clase VectorDinamico, y 'PintaVector' tambien es un metodo publico miembro de la clase VectorDinamico, uno puede acceder al otro sin problemas. Es parecido a tal como tienes en el primer codigo que accedes a 'numcasillas' que es una variable privada no estática miembro de VectorDinamico, que por definicion es accesible y solo accesible (alguna axcepcion) por los miembros definidos en esa clase; para entendernos, una funcion publica es aun mas accesible que una privada, aun asi colgaste el codigo accediendo a un elemento privado pero luego te da error acediendo a uno publico. Que error te muestra el compilador? Saludos vosk |
| |||
Respuesta: Duda sobre clases Eso es lo gracioso que no me da error el compilador. Pero un ejemplode ejecucion seria:
Código C++:
Ver original |
| |||
Respuesta: Duda sobre clases Acabo de darme cuenta: tienes mal asignado el valor de entrada
Código:
Corrige y comprueba otra vez, ok?VectorDinamico :: VectorDinamico (int ncasillas, double valor){ ncasillas = numcasillas; Saludos vosk |
| |||
Respuesta: Duda sobre clases Un truco de depurador: cuando te salen estos valores que 'no pueden ser' la mayoria de las veces es que tienes alguna variable no inicializada a la que por defecto se le asigna un bloque de memoria reutilizado, es decir que contiene datos basura de operaciones anteriores (de la misma aplicacion o incluso de otras). La idea es no suponer que una variable recien declarada se inicializa a 0 hasta que manualmente le asignas 0 Saludos vosk |
Etiquetas: |