Dev - C++ - Ayuda basica con clases

 
Vista:

Ayuda basica con clases

Publicado por xabi (4 intervenciones) el 16/12/2009 21:58:49
Ayuda basica con clases
Hola buenas me gustaria saber primero si se puede hacer en un solo fichero meter las clases y el main (ya se que si se utilizan clases por sentido común debe ir cada una en un fichero)

como seria la estructura algo asi?

int main()
{}

Class miclase
{
int var;
miclase(){...}
public miFuncion()
{... }

}

Class otra
{....
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda basica con clases

Publicado por powersgame (7 intervenciones) el 17/12/2009 00:12:26
Hola

Sí que se pueden definir las clases en el mismo fichero que el main, pero como bien dices la claridad del proyecto se vería gravemente afectada. La claridad es algo fundamental en un proyecto, sea de la naturaleza que sea. Tampoco es necesario definir las clases cada una en un fichero, a mi parecer eso podría resultar bastante engorroso cuando el número de clases que se utilicen sea elevado. La modulación del código es siempre algo muy relativo, pero siempre debe perseguir la claridad y la reutilización.

Para saber la estructura que debe tener el fichero "main.cpp", en el cual se definen clases y la función principal, debes tener en cuenta que el compilador de c++, interpreta el código secuencialmente. Es decir no podrás declarar un objeto de la clase "miclase" si no has definido la clase antes de que se analice la declaración. En la estructura de código que tu indicas, si declaras un objeto de la clase "miclase" dentro de main el compilador te presentará un error y no compilará, pues la definición de la clase aun no a sido analizada. Piensa que el compilador generalmente analiza el código línea a línea empezando por la primera.

Una forma correcta de hacerlo sería definir las clases antes del main:

class miclase
{
int var;
miclase(){...}
public: miFuncion()
{... }

}

class otra
{....
}

int main()
{}

Esta organización presentaría errores si la clase "miclase" utilizase objetos o referencias a la clase "otra", por el motivo que venimos comentando.

Quizás la mejor forma de hacerlo es indicando al compilador que va a existir las clases "miclase" y "otra", así el compilador tiene constancia de ello, y luego definirlas. Sería así:

class miclase; // El compilador sabe que va a existir una clase llamada miclase
class otra; // El compilador sabe que va a existir una clase llamada otra

int main() // Si en el main se utiliza la alguna de las clases el compilador no daría error pues ya sabe que existen
{} //solo tendría que buscar la definición y comprobar que se hace un buen uso léxico y sintáctico de la misma

class miclase //Definición de la clase "mi clase"
{
int var;
miclase(){...}
public: miFuncion()
{... }

}

class otra //Definición de la clase "otra"
{....
}

En este caso da igual definir las clases antes o después del main.

Espero haberte ayudado
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar