Autor
|
Tema: [C++]Duda sobre clases (Leído 4,004 veces)
|
SrCooper
Desconectado
Mensajes: 137
Bazinga!
|
Tengo el siguiente código: class Clase1{ public: funcion1(); }; class Clase2{ public: funcion2(); };
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
|
|
|
En línea
|
|
|
|
engel lex
|
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
Mensajes: 137
Bazinga!
|
Es que he estado mirando mucho código de otras personas para aprender y algunas usaban algo como esto: clase1->funcion1()
Y llamaban así a la función. ¿Cómo se usa este símbolo ->? 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
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
Una clase, como norma general, tiene esta forma: class Clase { public: // ... protected: // ... private: // ... };
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. class Clase { // ... public: void funcion( ); // ... }; Clase clase1; Clase* puntero_clase1 = &clase1; clase1.funcion( ); puntero_clase->funcion( );
|
|
|
En línea
|
|
|
|
eferion
Desconectado
Mensajes: 1.248
|
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
Mensajes: 137
Bazinga!
|
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
|
|
|
En línea
|
|
|
|
<<<-Basura->>>
Desconectado
Mensajes: 388
|
Claro que se puede llamar un método de una clase sin tener que declararlo class Clase1{ public: static void funcion1(); }; class Clase2{ public: void funcion2(){ Clase1::funcion1(); } };
Lo que tienes que hacer es declarar el método como static para poderlo invocar sin una instancia. static void funcion1();
Y para poderlo llamar lo invocas de la siguiente manera: Clase1::funcion1();
|
|
|
En línea
|
<<<--Basura-->>>
|
|
|
0xDani
Desconectado
Mensajes: 1.077
|
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
Mensajes: 137
Bazinga!
|
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
|
|
|
En línea
|
|
|
|
|
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
|
21 Octubre 2009, 23:29 pm
por murdock_
|
|
|
Dudas sobre Diagrama de Clases ... !
Programación General
|
llAudioslavell
|
4
|
3,492
|
17 Noviembre 2011, 05:18 am
por llAudioslavell
|
|
|
Duda sobre clases
Java
|
Zedmix
|
1
|
2,022
|
30 Noviembre 2011, 08:58 am
por Slava_TZD
|
|
|
Duda con Clases
.NET (C#, VB.NET, ASP)
|
Senior++
|
6
|
3,311
|
24 Febrero 2012, 10:48 am
por Senior++
|
|
|
Duda con las clases [c++]
« 1 2 »
Programación C/C++
|
Lotux5
|
11
|
5,864
|
20 Abril 2013, 02:29 am
por rir3760
|
|