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++ - Array dinamicamente allocati per classi base astratte
Forum - C/C++ - Array dinamicamente allocati per classi base astratte

Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 20:57
Mercoledì, 31/03/2010
Salve a tutti. Come faccio a creare un array allocato dinamicamente di una classe base con una funzione virtuale pura e ad assegnare ad esso oggetti di classi derivate?
Praticamente dato questo codice
Codice sorgente - presumibilmente C++

  1. template<class Type>
  2.         class _Command{
  3.                 public :
  4.                         _Command(Type&);
  5.                         //Funzione virtuale pura
  6.                         virtual bool execute()const = 0;
  7.                 protected:
  8.                         Type&   executor;
  9.                         char*   id;
  10.                         char*   description;
  11.                         char**  messages;
  12.  
  13.         };
  14.  
  15.         template <class Type>
  16.         _Command<Type>::_Command(Type& exec) : executor(exec){
  17.         }
  18.  
  19.  
  20.         class EvilServer{
  21.                 public:
  22.                         EvilServer();
  23.                         ~EvilServer();
  24.                         class Command : public _Command<EvilServer>{
  25.                                 public:
  26.                                         Command(EvilServer&);
  27.                         };
  28.                         class StartCrazyMouse : Command {
  29.                                 public:
  30.                                         StartCrazyMouse(EvilServer&);
  31.                                         virtual bool execute() const;
  32.                         };
  33.  
  34.                 private:
  35.                         Command** registeredCommands;
  36.                        
  37.         };




dovrei riuscire a scrivere dentro al costruttore una cosa del genere
Codice sorgente - presumibilmente C/C++

  1. EvilServer::EvilServer() {
  2. registeredCommandsCount = 10;
  3.         registeredCommands = new EvilServer::Command*[registeredCommandsCount];
  4. EvilServer::StartCrazyMouse* SV_COM_START_CRAZY_MOUSE = (EvilServer::StartCrazyMouse*)new EvilServer::StartCrazyMouse(*this);
  5.         registeredCommands[0] = SV_COM_START_CRAZY_MOUSE;
  6. }




Ma il compilatore mi genera il seguente errore

error: `EvilServer::Command' is an inaccessible base of `EvilServer::StartCrazyMouse'

Ultima modifica effettuata da robrock80 il 31/03/2010 alle 21:34


Nel mondo ci sono 10 tipi di persone: quelle che capiscono il binario e quelle che non lo capiscono
PM Quote
Avatar
robrock80 (Normal User)
Pro


Messaggi: 143
Iscritto: 11/12/2006

Segnala al moderatore
Postato alle 22:09
Mercoledì, 31/03/2010
Ok... risolto: bastava mettere l'eredità di EvilServer::StartCrazyMouse a public


Nel mondo ci sono 10 tipi di persone: quelle che capiscono il binario e quelle che non lo capiscono
PM Quote