En C el equivalente del record Pascal se llama el struct. En C++ es la classe. Es así como para una triangulacion, hecha de vértices y def triángulos, definiremos las clases siguientes:
// archivo leemalla.cpp
#include <iostream.h>
#include <fstream.h>
//DECLARACIONES
class Vertice { public: float x,y; int where;};
class Triangulo { public: int v[3]; int where;};
class Triangulacion {
public:
int nv,nt;
Vertice* v;
Triangulo* t;
Triangulacion(const char* path);
};
//IMPLEMENTACIONES
Triangulacion::Triangulacion (const char* path)
{
int i,j,k,i1;
ifstream file(path);
file >> nv >>nt;
v = new Vertice[nv];
t = new Triangulo[nt];
for( i=0; i<nv; i++)
file >> v[i].x >> v[i].y >> v[i].where;
for( j=0; j<nt; j++){
for( k=0; k<3;k++) { file >> i1; t[j].v[k] = --i1;}
file >> t[j].where;
}
file.close();
}
void main()
{
Triangulacion g("micro.msh");
}
Se ha restado 1 a los números de los vértices leidos para t[j].v[k] escriviendo "- -i1". Esto es porque los arreglos en C/C++ comienzan en 0 y no en 1 como en FORTRAN. Adoptaremos la convención FORTRAN para los archivos. Esto es porque los programadores C/C++ conocen esta dificultad en cambio no ocurre lo mismo con los programadores FORTRAN.