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ù:
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;
      
      
    }
  }
}
generate()
codice:
void Password::generate()
{
   MPWD * mypwd = new MPWD;
   mypwd->setLength(length);
   mypwd->genSource(&sourcePassword);
   cout << "Password generata: " << mypwd->getPassword() << endl;
  delete mypwd;
  
  
  
}
classe MPWD
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()];
    
  }
}
Il problema deve essere limitato a quella funzione, perché setLength funziona tranquillamente.
Chiaramente ogni suggerimento è ben accetto.

Saluti.