RE:Ayuda basica con clases
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