Test Foro de elhacker.net SMF 2.1

Programación => Programación C/C++ => Mensaje iniciado por: darkvidhack en 17 Mayo 2011, 16:21 PM

Título: Paso de flujos por parametro
Publicado por: darkvidhack en 17 Mayo 2011, 16:21 PM
Hola amigos, tengo un problema con el paso de flujos por parametro, aver si ustedes sabrían solucionarmelo ;), es el siguiente:

Código (cpp) [Seleccionar]

#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
Título: Re: Paso de flujos por parametro
Publicado por: satu en 17 Mayo 2011, 20:37 PM
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

Código (cpp) [Seleccionar]

#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
Título: Re: Paso de flujos por parametro
Publicado por: darkvidhack en 17 Mayo 2011, 22:10 PM
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 ;)


Título: Re: Paso de flujos por parametro
Publicado por: satu en 17 Mayo 2011, 22:48 PM
Cita de: darkvidhack en 17 Mayo 2011, 22:10 PM
Muchas Gracias, ya he resuelto la duda

De nada, pa eso estamos

:P :P