elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda con las clases [c++]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Duda con las clases [c++]  (Leído 5,194 veces)
Lotux5

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Duda con las clases [c++]
« en: 19 Abril 2013, 18:49 pm »

¿como uso una funcion de una clase dentro de otra?


En línea

naderST


Desconectado Desconectado

Mensajes: 625



Ver Perfil WWW
Re: Duda con las clases [c++]
« Respuesta #1 en: 19 Abril 2013, 19:09 pm »

Depende, si el método es estático lo llamas como una función sino debes crear una instancia de la clase y llamarlo.


En línea

Lotux5

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: Duda con las clases [c++]
« Respuesta #2 en: 19 Abril 2013, 19:49 pm »

Lo siento pero no te entiendo -.-". Por ejemplo: como introduciria la funcion int VectorDinamico :: Ncasillas(void){  return(numcasillas); } en otro metodo de la clase?

En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda con las clases [c++]
« Respuesta #3 en: 19 Abril 2013, 20:04 pm »

Como ya te comento naderST solo debes llamar a la funcion si es parte de la misma clase o, si se trata de una clase distinta, crear un objeto y en base a este llamar a la funcion.

Para el caso concreto que mencionas aplica lo primero, mas o menos asi:
Código
  1. class VectorDinamico {
  2.   public:
  3.      int Ncasillas();
  4.      int Ncasillas2();
  5.   private:
  6.      int numcasillas;
  7. };
  8.  
  9. int VectorDinamico::Ncasillas(){
  10.   return numcasillas;
  11. }
  12.  
  13. int VectorDinamico::Ncasillas2()
  14. {
  15.   return Ncasillas();
  16. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Lotux5

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: Duda con las clases [c++]
« Respuesta #4 en: 19 Abril 2013, 20:10 pm »

Eso no tiene sentido ya que tengo el doble de lo mismo y me quedo con la duda de como introducir ese metodo dentro de otro diferente (dento de la misma clase) aqui de mi clase:


Código
  1. #ifndef VECTORDINAMICO
  2. #define VECTORDINAMICO
  3.  
  4. #include <iostream>
  5. using namespace std;
  6.  
  7. class VectorDinamico {
  8. private:
  9. double * vector;
  10. int numcasillas;
  11.  
  12. public:
  13. VectorDinamico (void);
  14. VectorDinamico (int ncasillas);
  15. VectorDinamico (int ncasillas, double valor);
  16. ~VectorDinamico (void);
  17. bool EstaVacio (int ncasillas);
  18. int NCasillas (void);
  19. void EscribirValor (double valor, int posicion);
  20. void LeerValor (int posicion);
  21. void EscribirVector (int ncasillas);
  22. void RedimensionarVector (int ncasillas);
  23. void PintaVector(int ncasillas);
  24.  
  25. };
  26.  
  27. #endif


Código
  1. #include <iostream>
  2. #include "VectorDinamico.h"
  3.  
  4. using namespace std;
  5.  
  6. VectorDinamico :: VectorDinamico (void){
  7.  
  8. vector = new double [10];
  9.  
  10. for (int i=0; i<10; i++)
  11. vector[i]=0;
  12.  
  13. }
  14.  
  15. VectorDinamico :: VectorDinamico (int ncasillas){
  16.  
  17. numcasillas=ncasillas;
  18. vector = new double [numcasillas];
  19.  
  20. for (int i=0; i<numcasillas; i++)
  21. vector[i]=0;
  22.  
  23. }
  24.  
  25. VectorDinamico :: VectorDinamico (int ncasillas, double valor){
  26.  
  27. ncasillas=numcasillas;
  28. vector = new double [numcasillas];
  29.  
  30. for (int i=0; i<numcasillas; i++)
  31. vector[i]=valor;
  32.  
  33. }
  34.  
  35. VectorDinamico :: ~VectorDinamico (void){
  36.  
  37. delete [] vector;
  38.  
  39. }
  40.  
  41. int VectorDinamico :: NCasillas (void){
  42.  
  43. return (numcasillas);
  44. }
  45.  
  46. void VectorDinamico :: EscribirValor (double valor, int posicion){
  47.  
  48. vector[posicion]=valor;
  49.  
  50. }
  51.  
  52. void VectorDinamico :: LeerValor (int posicion){
  53.  
  54. cout << vector[posicion] << endl;
  55.  
  56. }
  57.  
  58. void VectorDinamico :: EscribirVector (int ncasillas){
  59. double valor;
  60. for (int i=0; i<ncasillas; i++){
  61. cout << "Introduce un valor: ";
  62. cin >> valor;
  63. vector[i] = valor;
  64. }
  65. }
  66.  
  67. void VectorDinamico :: PintaVector(int ncasillas){
  68. for (int i=0;i<ncasillas;i++)
  69. cout << vector[i] << endl;
  70.  
  71.  
  72.  
  73. }
  74.  
  75. bool VectorDinamico :: EstaVacio (int ncasillas){
  76.  
  77. for (int i=0; i<ncasillas; i++)
  78. if (vector[i]!=0)
  79. return (false);
  80.  
  81. return (true);
  82. }
  83.  
  84.  
  85.  
En línea

Lotux5

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: Duda con las clases [c++]
« Respuesta #5 en: 19 Abril 2013, 20:14 pm »

A ver, por si todavia no que da clara mi duda, en resumidas cuentas seria ¿"COMO llamar a un metodo dentro de otro de la misma clase"?
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda con las clases [c++]
« Respuesta #6 en: 19 Abril 2013, 20:32 pm »

¿"COMO llamar a un metodo dentro de otro de la misma clase"?
Pues honestamente me estoy quedando sin formas de explicarlo.

Intento con un ejemplo donde una función miembro llama a otra:
Código
  1. #include <iostream>
  2. using std::cin;
  3. using std::cout;
  4. using std::endl;
  5.  
  6. class foo {
  7.   public:
  8.      int uno();
  9.      int dos();
  10. };
  11.  
  12. int foo::uno()
  13. {
  14.   return 1;
  15. }
  16.  
  17. int foo::dos()
  18. {
  19.   return uno() + 1;
  20. }
  21.  
  22. int main()
  23. {
  24.   foo test;
  25.  
  26.   cout << test.uno() << endl;
  27.   cout << test.dos() << endl;
  28.  
  29.   return 0;
  30. }

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Lotux5

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: Duda con las clases [c++]
« Respuesta #7 en: 19 Abril 2013, 20:51 pm »

Gracias por las molestias, pero yo no se si yo soy muy tonto o no nos estamos entendiendo bien. xD

Yo lo que quiero es una cosa asi.

int VectorDinamico :: NCasillas (void)
{
        return (numcasillas);
}

Y despues con esta funcion usar algo asi:
void VectorDinamico :: PintaVector (void)
{
       int n = NCasillas (void);
       for (int i=0; i<n; i++)
                  cout << vector << endl;
}

Pero la parte de int n = NCasillas(void) no me funciona y tambien he probado n = this->N y tampoco y esa es mi duda como usar la funcion de arriba para usarla en el metodo de abajo.
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Duda con las clases [c++]
« Respuesta #8 en: 19 Abril 2013, 21:12 pm »

Pero la parte de int n = NCasillas(void) no me funciona
Y no debe funcionar ya que es un error. Cuando se llama a una función que no recibe argumentos se utilizan los paréntesis vacíos.

El uso de void es necesario en el lenguaje C en la declaración y definición de una función pero no en los usos de (llamadas a) esta.

En el caso de C++ el uso de void no es necesario y no se recomienda.

Si tomo tu programa y la definición de la función "PintaVector" la sustituyo por esta:
Código
  1. void VectorDinamico::PintaVector(void)
  2. {
  3.   int n = NCasillas();
  4.  
  5.   for (int i=0; i<n; i++)
  6.      cout << vector << endl;
  7. }
Compila sin problemas.

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
Lotux5

Desconectado Desconectado

Mensajes: 24


Ver Perfil
Re: Duda con las clases [c++]
« Respuesta #9 en: 19 Abril 2013, 21:33 pm »

Perdon, me equivoque al copiarlo, "n = NCasillas();" pero aun asi tampoco me funciona. Ese es mi problema.
En línea

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda con implementación de clases de UML a C++
Programación C/C++
novalida 2 2,913 Último mensaje 23 Septiembre 2011, 22:16 pm
por novalida
Duda sobre clases
Java
Zedmix 1 1,899 Último mensaje 30 Noviembre 2011, 08:58 am
por Slava_TZD
Duda con Clases
.NET (C#, VB.NET, ASP)
Senior++ 6 3,030 Último mensaje 24 Febrero 2012, 10:48 am
por Senior++
[DUDA] Clases anidadas.
Programación C/C++
Zodiak98 1 2,319 Último mensaje 15 Mayo 2013, 01:03 am
por amchacon
[C++]Duda sobre clases
Programación C/C++
SrCooper 8 3,649 Último mensaje 14 Julio 2013, 00:00 am
por SrCooper
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines