Si
referidosRegistro no va a tener parte privada te aconsejo usar
struct en vez de
class. En C++ la única diferencia entre ambos es que la visibilidad por defecto es pública para
struct y privada para
class. Tu clase podría quedar entonces así:
Código C++:
Ver originalstruct referidosRegistro
{
int numero;
string bandera;
string referido;
string referidoDesde;
string fechaExpiracion;
string ultimoClick;
int clicks;
float media;
int fechaExpiracionDias; //calculado
//funcion que toma un getline declarado en creaClaseReferidoRegistro y lo transforma en un array. Tambien llama a la funcion declarador
void stringToArray(string lineaReferido);
//funcion que toma el array de la funcion anterior, convierte los tipos necesarios y los asigna como datos de la clase
void declarador (string _numero, string _bandera, string _referido, string _referidoDesde, string _fechaExpiracion, string _ultimoClick, string _clicks, string _media);
};
Parece una tontería ahorrarse el "public" pero piensa que si la gente ve un
struct por motivos históricos entenderá que sus variables internas son públicas... se mejora la legibilidad del código.
Por otro lado, las funciones no necesitan un ';' después de la llave de cierre. Esta característica es exclusiva de clases, estructuras y enumerados.
Y bueno, al lio. Quieres guardar el estado del objeto en un fichero. En C++ no tienes acceso directo a la memoria interna de los objetos (pongamos el
string por ejemplo). Esto impide que puedas volcar el contenido de un objeto directamente al disco al estilo de C... si lo haces el fichero acabará almacenando punteros en vez de información útil. Es por este motivo que la única forma de guardar el estado del objeto es guardar cada elemento por separado.
Si vas a usar los streams de C++ puedes sobrecargar los operadores << y >> para almacenar y recuperar los datos del fichero.
Código C++:
Ver originalostream& referidosRegistro::operator<<(ostream& stream) const
{
stream << numero << bandera << ...
return stream;
}
istream& referidosRegistro::operator>>(istream& stream)
{
stream >> numero >> bandera >> ...
return;
}
Para algún tipo puede que tengas que modificar los flags del stream o hacer un volcado manual (por ejemplo si algún elemento almacena información binaria)... C++ es así y es complicado dar una norma general que se cumpla siempre :)