Tengo un problema al tratar de guardar un array en un archivo con la biblioteca fstream, y es que tengo una estructura dinámica que almacena una serie de números y me interesa guardarla de alguna forma, por lo que he decidido meter todos los valores en una estructura con un array (el cual es de tamaño variable, puesto que la cantidad de números que tiene que almacenar varía) y almacenar esta estructura en el fichero.
La estructura es la siguiente:
long int cantidadAlmacenar = 0;
struct guardarArchivo{
long int cantidad = cantidadAlmacenar;
long int numero [cantidad] = {0};
};
Y la funcion que transforma la estructura dinámica en el array (en verdad es un método de una clase)es la siguiente:
void CCifras::guardarArchivo(void)
{
struct guardarArchivo guardar;
struct nodo* guia = comienzo;
for(int i = 0; i < cantidad; i++)
{
guardar.numero[i] = guia.numero;
guia = guia.siguiente;
}
ofstream ficheroEscribir; ficheroEscribir.open ("BaseDatos.dat", ios::out | ios::binary);
ficheroEscribir.write((char *) &guardar, sizeof(guardar));
ficheroEscribir.close();
}
Pero esta técnica hace aguas por todas partes (ya la he utilizado y funciona cuando la cantidad de valores a almacenar es fija, pero este no es el caso) y el compilador me da el error: "invalid use of non-static data member" en la linea donde pone
long int numero [cantidad] = {0};
.
El caso, si alguien puede decirme cual es el fallo en mi forma de hacerlo o directamente la forma correcta de hacer lo que quiero se lo agradecería XD