Salve a tutti.
Sto creando un programma in C++ per la generazione di password che utilizza due classi ed un menù. Quando inserisco il numero 5, per generare la password, la funzione della classe adibita a tale operazione non viene chiamata.
Infatti, inserendo un banale messaggio in output non viene visualizzato.
Ecco i frammenti relativi:
Menù:
generate()codice:void Password::menu() { while (true){ cout << "Quale opzione desidera?" << endl; cout << "1. Ottieni lunghezza password" << endl << "2. Caratteri da utilizzare" << endl << "3. Mostra seme password" << endl << "4. Inserisci lunghezza."<< endl << "5. Genera" << endl << "6. Esci" << endl; int scelta; cin >> scelta; switch (scelta) { case 1: cout << "Lunghezza password: "<<getLength() << endl; break; case 3: cout << "Stringa sorgente: "<<getSource()<<endl; break; case 6: exit(0); break; case 5: generate(); break; case 2: componiSource(); break; case 4: cin >> length; break; default: cout << "Menù inesistente!" << endl; } } }
classe MPWDcodice:void Password::generate() { MPWD * mypwd = new MPWD; mypwd->setLength(length); mypwd->genSource(&sourcePassword); cout << "Password generata: " << mypwd->getPassword() << endl; delete mypwd; }
Il problema deve essere limitato a quella funzione, perché setLength funziona tranquillamente.codice:#include "makepwd.h" #include <string> #include <cstdlib> #include <ctime> #include <iostream> using namespace std; void MPWD::setLength(int _length) { length = (_length > 0 ? _length : -1); if (length == -1) cout << "ERRORE: la lunghezza deve essere maggiore di 1!" << endl; exit(0); } string MPWD::getPassword() { return password; } void MPWD::genSource(const string *sourcePtr) { if (sourcePtr->length() <= 0) { cout << "ERRORE: sorgente invalido. " << endl; exit(0); } //generazione carattere random for (int i = 0; i < length; i++) { srand(time(0)); for (int j = 0; j < length*(rand()%1000); j++); password += sourcePtr[rand() % sourcePtr->length()]; } }
Chiaramente ogni suggerimento è ben accetto.
Saluti.![]()

Rispondi quotando
?