Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C/C++ - Errore EXC_BAD_ACCESS mentre creo un oggetto
Forum - C/C++ - Errore EXC_BAD_ACCESS mentre creo un oggetto

Avatar
Gioviok (Normal User)
Newbie


Messaggi: 7
Iscritto: 26/03/2016

Segnala al moderatore
Postato alle 21:54
Sabato, 20/05/2017
Salve a tutti
E' da un po che ho un problema che mi impedisce di andare avanti con un mio progetto: ho una classe, il cui costruttore richiede una variabile string  e nel main creo l'oggetto subito dopo avere fatto "cin>>" sulla stringa da usare come parametro: ecco il codice della classe(uso il namespace sta per tutto il codice)
Codice sorgente - presumibilmente C#

  1. class player {
  2.     string ID;
  3.     string filename;
  4.     string name=0;
  5.     ifstream file;
  6.    
  7. public:player(string IID=""){
  8.     if(IID==""){
  9.         ID=generate_unique_ID(15);
  10.         filename=ID+".txt";
  11.         cout<<"Creato un giocatore con ID unico: "<<ID<<endl;
  12.     }
  13.     else{
  14.         ID=IID;
  15.         filename=ID+".txt";
  16.         cout<<"Login di un giocatore con ID unico: "<<ID<<endl;
  17.     }
  18.     }
  19.     bool fileopen(){
  20.         file.open(filename);
  21.         string current;
  22.         getline(file,current);
  23.         if (current==ID){
  24.             return true;
  25.         }
  26.         else{
  27.             file.close();
  28.             return false;
  29.         }
  30.         return false;
  31.     }
  32.     string getID(){
  33.         return ID;
  34.     }
  35.     string generate_unique_ID( size_t length )
  36.     {
  37.         auto randchar = []() -> char
  38.         {
  39.             const char charset[] =
  40.             "0123456789"
  41.             "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  42.             "abcdefghijklmnopqrstuvwxyz";
  43.             const size_t max_index = (sizeof(charset) - 1);
  44.             return charset[ rand() % max_index ];
  45.         };
  46.         string str(length,0);
  47.         generate_n( str.begin(), length, randchar );
  48.         return str;
  49.     }
  50. };


e poi nel main
Codice sorgente - presumibilmente C#

  1. int main(int argc, const char * argv[]) {
  2.     string login;
  3.     cout<<"Inserisci il tuo ID"<<endl;
  4.     cin>>login;
  5.     player me(login);
  6. return 0;
  7. }


Siccome uso Xcode ho provato a usare l'utility Zombie, ma non mi da nessun aiuto...
Inoltre il compilatore non mi da errori.
Dov'è l'errore? Premetto che ho incluso tutte le librerie necessarie ( iostream,string,time.h,iomanip,fstream )
Grazie in anticipo!:)

Ultima modifica effettuata da Gioviok il 20/05/2017 alle 21:55


Mmm...una struttura nuda...
PM Quote
Avatar
lumo (Member)
Expert


Messaggi: 416
Iscritto: 18/04/2010

Segnala al moderatore
Postato alle 23:54
Sabato, 20/05/2017
Codice sorgente - presumibilmente C/C++

  1. string name=0;



Sicuro che sia quello che vuoi?
Comunque non vedo errori evidenti che lascino pensare a un errore di accesso di memoria, sarebbe molto utile se riuscissi a usare il debugger per vedere se veramente l'errore avviene al momento della creazione dell'oggetto e magari in che punto del costruttore.

Ah, non usi srand.

PM Quote
Avatar
Gioviok (Normal User)
Newbie


Messaggi: 7
Iscritto: 26/03/2016

Segnala al moderatore
Postato alle 22:02
Martedì, 23/05/2017
Provato a cambiare quello che hai detto tu ma niente. Il fatto che non uso stand è che lo ho dimenticato:asd::asd:... Ho usato tutto ciò che Xcode mi offre per il debug ma l'errore appare quando creo l'oggetto... Grazie per l'aiuto:k:


Mmm...una struttura nuda...
PM Quote