Ciao ragazzi, sono nuovo nel forum quindi se sbaglio in qualcosa fatemelo notare.
Sto scrivendo un programma per l' università e sono da un paio di giorni piantato su questa cosa.
Il programma viene complilato senza problemi, solo che quando lo eseguo crusha ubuntu e devo riavviarlo per poter riiniziare.
Ho provato a compilarlo su un altro computer e da quel che ho capito il problema è nella acquisizione del file da leggere.
Esso dovrebbe essere preso in fase di esecuzione da terminale, poi passato ad una classe che lo legge.
int main( int argc, char* argv[] ) {
// create data source
EventSource* es;
const string type = argv[1];
if ( type == "input" ) {
const string name = argv[2];
es = new EventReadFromFile( name );
}
else {
cout << "invalid keyword" << endl;
return 0;
}
e posto la classe:
class EventReadFromFile: public EventSource {
public:
// read data from file "name"
EventReadFromFile( const std::string& name );
virtual ~EventReadFromFile();
private:
// dummy copy constructor and assignment to prevent unadvertent copy
EventReadFromFile ( const EventReadFromFile& x );
EventReadFromFile& operator=( const EventReadFromFile& x );
// get an event
virtual const Event* get(); //è virtual qui perchè deriva da una classe base che ha il questa funzione virtual
// input file
std::ifstream* ifi;
// read and event
const Event* readFile();
// read data from file "name"
EventReadFromFile::EventReadFromFile( const string& name ) {
ifi = new ifstream( name.c_str(), ios::in );
}
EventReadFromFile::~EventReadFromFile() {
delete ifi;
}
// get an event
const Event* EventReadFromFile::get() {
return readFile();
}
// read an event
const Event* EventReadFromFile::readFile() {
Event* q ;//pointer to object
int j =0;// event id
if( ifi->read(reinterpret_cast<char*>( &j ),sizeof(j)) ) {/*se apre il file creo nuovo evento, altrimenti ritorno 0 */
float a,b,c;
a=b=c=0.0;// event coordinates
ifi->read(reinterpret_cast<char*>( &a ),sizeof(a));
q=new Event(j,a) ; }
else {cout<<"houston abbiamo un problema"<<endl;
return 0 ;
}
...
la classe prende il nome e crea un file ifstream per poi leggerlo, non capisco perchè se non trova il file non mi ritorna errori.
Grazie per l' attenzione e se ho dimenticato di dire qualcosa fatemi sapere.