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

 

 


Tema destacado: Security Series.XSS. [Cross Site Scripting]


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

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
[C++]Duda sobre clases
« en: 12 Julio 2013, 15:04 pm »

Tengo el siguiente código:
Código
  1. class Clase1{
  2. public:
  3.    funcion1();
  4. };
  5.  
  6. class Clase2{
  7. public:
  8.    funcion2();
  9.  
  10. };

En la declaración de la funcion2, se necesita llamar a funcion1, pero no he creado todavía ningún objeto de la clase1.
El problema se resume en la siguiente pregunta, ¿se pueden llamar a los métodos de una clase sin declarar ningún objeto de esta?

Aún no he creado ningún objeto porque primero estoy declarando todas las clases, las funciones, etc. y ya después en el main crearé los objetos necesarios. También he pensado en declarar un objeto de la clase1 para usarlo en la clase2 y después sobreescribirlo en el main, pero realmente me pierdo con las clases y no sé hacer esto. Alomejor estoy entendiendo mal el concepto de clase y resulta que no se puede hacer algo similar...

Un saludo y espero que me aclaréis este lío que tengo armado en mi cabeza  :P


En línea

engel lex
Moderador Global
***
Desconectado Desconectado

Mensajes: 15.514



Ver Perfil
Re: [C++]Duda sobre clases
« Respuesta #1 en: 12 Julio 2013, 15:09 pm »

herencia

dejo un link que te puede servir

http://c.conclase.net/curso/?cap=036


En línea

El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: [C++]Duda sobre clases
« Respuesta #2 en: 12 Julio 2013, 18:33 pm »

Es que he estado mirando mucho código de otras personas para aprender y algunas usaban algo como esto:
Código
  1. clase1->funcion1()
Y llamaban así a la función. ¿Cómo se usa este símbolo ->?

herencia

dejo un link que te puede servir

http://c.conclase.net/curso/?cap=036

Ya miré el link, pero no creo que esto resuelva mi problema, pues en mi caso, la clase1 y la clase2 son muy diferentes entre sí, una no puede ser heredada de la otra. A no ser que ambas fueran derivadas de otra, la Clase0, por ejemplo. ¿En este caso podría usar la funcion1 en la clase2?

Un saludo, y gracias por todo  :P
En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: [C++]Duda sobre clases
« Respuesta #3 en: 12 Julio 2013, 20:03 pm »

Una clase, como norma general, tiene esta forma:

Código
  1. class Clase
  2. {
  3.  public:
  4.    // ...
  5.  
  6.  protected:
  7.    // ...
  8.  
  9.  private:
  10.    // ...
  11. };

Los elementos que están en private son accesibles únicamente por la propia clase. Aquí suelen ir las variables internas de la clase.

Los elementos de la parte protected son accesibles por la propia clase y por las clases que hereden de ésta... para el resto no es información accesible.

Los elementos de la parte public son accesibles por todos.

Dicho esto, para acceder a cualquier miembro desde fuera de la clase tienes que utilizar bien el operador '.', bien el operador '->', dependiendo de si a la clase accedes de una forma estática o si es un puntero.

Código
  1. class Clase
  2. {
  3.  // ...
  4.  
  5.  public:
  6.    void funcion( );
  7.  
  8.  // ...
  9. };
  10.  
  11. Clase clase1;
  12. Clase* puntero_clase1 = &clase1;
  13.  
  14. clase1.funcion( );
  15. puntero_clase->funcion( );

En línea

eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: [C++]Duda sobre clases
« Respuesta #4 en: 12 Julio 2013, 20:09 pm »

No creo que sea necesario decir que para acceder a los miembros de una clase necesitas un objeto ya creado de esa clase... salvo que sea un miembro estático, pero ese no es tu caso.
En línea

SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: [C++]Duda sobre clases
« Respuesta #5 en: 12 Julio 2013, 20:16 pm »

No creo que sea necesario decir que para acceder a los miembros de una clase necesitas un objeto ya creado de esa clase... salvo que sea un miembro estático, pero ese no es tu caso.

Vale, esa era mi duda, gracias :D
En línea

<<<-Basura->>>


Desconectado Desconectado

Mensajes: 388



Ver Perfil
Re: [C++]Duda sobre clases
« Respuesta #6 en: 12 Julio 2013, 23:49 pm »

Claro que se puede llamar un método de una clase sin tener que declararlo

Código
  1. class Clase1{
  2. public:
  3.    static void funcion1();
  4. };
  5.  
  6. class Clase2{
  7. public:
  8.    void funcion2(){
  9. Clase1::funcion1();
  10.    }
  11. };
  12.  

Lo que tienes que hacer es declarar el método como static para poderlo invocar sin una instancia.
Código
  1. static void funcion1();

Y para poderlo llamar lo invocas de la siguiente manera:
Código
  1. Clase1::funcion1();
En línea

<<<--Basura-->>>
0xDani


Desconectado Desconectado

Mensajes: 1.077



Ver Perfil
Re: [C++]Duda sobre clases
« Respuesta #7 en: 13 Julio 2013, 23:54 pm »

Si no necesitas usar miembros de la clase en una función, puedes declararla como static, o si no puedes hacer que funcion2() tome como parámetro un objeto de la clase funcion1. También puedes incluir un objeto de la clase Clase1 como miembro de la clase Clase2.

Saludos.
En línea

I keep searching for something that I never seem to find, but maybe I won't, because I left it all behind!

I code for $$$
Hago trabajos en C/C++
Contactar por PM
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: [C++]Duda sobre clases
« Respuesta #8 en: 14 Julio 2013, 00:00 am »

Si no necesitas usar miembros de la clase en una función, puedes declararla como static, o si no puedes hacer que funcion2() tome como parámetro un objeto de la clase funcion1. También puedes incluir un objeto de la clase Clase1 como miembro de la clase Clase2.

Saludos.

Al final he hecho eso último. Un saludo y gracias  :laugh:
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[SOLUCIONADO] C# - Duda sobre interfaz en clases
.NET (C#, VB.NET, ASP)
AlonsoCN 3 5,557 Último mensaje 21 Octubre 2009, 23:29 pm
por murdock_
Dudas sobre Diagrama de Clases ... !
Programación General
llAudioslavell 4 3,492 Último mensaje 17 Noviembre 2011, 05:18 am
por llAudioslavell
Duda sobre clases
Java
Zedmix 1 2,022 Último mensaje 30 Noviembre 2011, 08:58 am
por Slava_TZD
Duda con Clases
.NET (C#, VB.NET, ASP)
Senior++ 6 3,311 Último mensaje 24 Febrero 2012, 10:48 am
por Senior++
Duda con las clases [c++] « 1 2 »
Programación C/C++
Lotux5 11 5,864 Último mensaje 20 Abril 2013, 02:29 am
por rir3760
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines