Hola amigos, tengo un problema con el paso de flujos por parametro, aver si ustedes sabrían solucionarmelo ;), es el siguiente:
#include "Piloto.h"
#include <fstream>
int main () {
//Cargo los pilotos a memoria
ifstream entrada ("pilotos.csv");
Piloto* *pilotos=new Piloto*[24]; ++++++++++++++++++++++++++++++++++++++++++
for(int i=0;i<24;i++){
pilotos[i]=new Piloto(entrada);
}
-------------------------------------------------------------------------------------
Piloto.cpp
Piloto::Piloto() {
Piloto::fromCSV(entrada);
}
--------------------------------------------------------------------------------------
Metodo 'fromCSV'
void Piloto::fromCSV (entrada) { +++++++++++++++++++++++++++++++++
getline(entrada,nom,';'); +++++++++++++++++++++++++
getline(entrada,ape,';'); ++++++++++++++++++++++++
entrada>>edad; ++++++++++++++++++++++++++++++++++
}
Las lineas con simbolos '+' son aquellas donde el compilador me detecta fallo, algunos de ellos son:
- 'entrada' has incompleted type
- initializing argument 1 of 'Piloto::Piloto(std::ifstream)'
- 'std::basic_streambuf<_CharT, _Traits>::basic_streambuf(const std::basic_streambuf<_CharT, _Traits>::__streambuf_type&) [with _CharT = char, _Traits = std::char_traits<char>, std::basic_streambuf<_CharT, _Traits>::__streambuf_type = std::basic_streambuf<char>]' is private
GRACIAS DE ANTEMANO
Hola
Creo que es porque en la función "fromCSV" no indicas el tipo de dato que es "entrada"
además Piloto* *pilotos=new Piloto*[24]; sería Piloto* *pilotos=new *Piloto[24];
y también deberías pasarle "entrada" al constructor ya que desde el constructor llamas a la función con el parámetro
#include "Piloto.h"
#include <fstream>
int main () {
//Cargo los pilotos a memoria
ifstream entrada ("pilotos.csv");
Piloto* *pilotos=new *Piloto[24];
for(int i=0;i<24;i++){
pilotos[i]=new Piloto(entrada);
}
-------------------------------------------------------------------------------------
Piloto.cpp
Piloto::Piloto(ifstream &entrada) {
Piloto::fromCSV(entrada);
}
--------------------------------------------------------------------------------------
Metodo 'fromCSV'
void Piloto::fromCSV (ifstream &entrada) {
getline(entrada,nom,';');
getline(entrada,ape,';');
entrada>>edad;
}
Eso es lo que he visto, si tienes dudas o lo que sea aquí estamos
Saludos
Hola!! Muchas gracias por la respuesta, la encontré antes de leer el post xD, resulta que los flujos siempre se pasan por referencia, como tú bien indicas con el & en los parámetros formales de los métodos, aparte que me faltaba indicar el tipo de dato que era 'entrada', respecto al vector de punteros a objetos, esa linea no me daba ningún fallo.
Muchas Gracias, ya he resolvido la duda ;)
Cita de: darkvidhack en 17 Mayo 2011, 22:10 PM
Muchas Gracias, ya he resuelto la duda
De nada, pa eso estamos
:P :P