Buenas,
hace tiempo que no programo en C++ y estuve bastante tiempo con Java.
Ahora me he vuelto a poner en C++ y echo de menos una cosa que gustaba mucho de Java, su organización.
En Java es muy fàcil crear packages y tenerlo todo bien ordenadito, y en C++ me encuentro que todo va dentro de src al monton.
Supongo que hay alguna forma de hacerlo un poco màs bonito (al fin y al cabo supongo que será qüestion de poner el path en el Makefile) però estoy desenvolupando en Anjuta y no encuentro la manera.
He provado de crear un grupo "dominio" (miscelaneous data) y poner las clases con ese objetivo, peró cuando compilo el main no hay problema, pero quan intento montarlo me dice que no puede resolver las referencias a funciones de otras clases.
Alguna idea, o una iluminación que me ayude a organizar mejor mis proyectos??
para poner un ejemplo un poco más ilustrativo, supongamos que tenemos una clase Ciclista, y otra CiclistaDAO y queremos tener "ma o menos" la estructura seguiente:
-domain
|-entities
| |-Ciclista (.h i/o .cpp)
| |-Bici (.h i/o .cpp)
| |-...
|-dao
| |-CiclistaDAO (.h i/o .cpp)
| |-BiciDAO (.h i/o .cpp)
| |-..
main.cpp
graicas
Tu puedes dar la estructura que quieras, solo en los archivos de inclusión debes tomar bien en cuenta las rutas, aquí te pongo un ejemplo básico:
┌─[0 leo@archero ~/c_projects/organizacion]$
└─> tree
.
├── Clases
│ └── Figura.h
├── cpps
│ └── Figura.cpp
└── main.cpp
2 directories, 3 files
Un ejemplo básico.
Clases/Figura.h
#ifndef _FIGURA_H
#define _FIGURA_H
class Figura
{
public:
Figura(const int&);
void setLados(const unsigned int &lados);
unsigned int getLados(void);
private:
unsigned int lados;
};
#endif
cpps/Figura.cpp
#include "../Clases/Figura.h"
Figura::Figura(const int &l)
{
lados = l;
}
void Figura::setLados(const unsigned int &l)
{
lados = l;
}
unsigned int Figura::getLados(void)
{
return lados;
}
main.cpp:
#include "Clases/Figura.h"
#include <iostream>
int main(void)
{
signed int lados = 2;
Figura fig(lados);
std::cout << fig.getLados() << std::endl;
return 0;
}
Compilación:
g++ main.cpp cpps/Figura.cpp -o salida
Ahora la estructura:
┌─[0 leo@archero ~/c_projects/organizacion]$
└─> tree
.
├── Clases
│ └── Figura.h
├── cpps
│ └── Figura.cpp
├── main.cpp
└── salida
2 directories, 4 files
En la inclusión de las cabeceras, debes de tomar en cuenta las rutas, tú puedes distribuir las cabeceras y sus implementaciones como quieras.
Saludos.