Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    Classe Derivata & Base

    Se io ho una classe base e una derivata, nel costruttore della classe derivata posso richiamare un oggetto della classe base che poi vado ad utilizzare nella classe base, esempio:

    //////////////////////////////////// classe base /////////////////////////////////
    Class Base
    {
    public:
    Base(){};
    void scrivi(Base*);
    Base* prova2(Base*);

    private:
    Base *z;
    }

    Base* Base:rova2(Base* nuovo)
    {

    nuovo->scrivi(XXX); //XKE IN QUESTO CASO MI DA ERRORE

    }
    ////////////////////////////////// classe derivata ///////////////////////////////////////////
    #include"base.h"
    Classe derivata
    {
    private:
    Base *x;
    Base *Y;
    public:
    derivata(){};
    }

    derivata::derivata()
    {
    XXX=new *Base();
    XXX->prova(XXX);
    }

    //////////////////////////////////////////////

    L'errore che mi da in quel caso è was not declared in this scope. Nonostante abbia utilizzato gli include...qualcuno puo aiutarmi??
    Grazie a tutti in anticipo!

  2. #2
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    scrivi l' hai solo dichiarato come prototipo, ma poi non l' hai implementato.
    Ma la classe derivata non eredita da base, non usi l' ereditarietà e tra l' altro il tuo codice non ha degli errori di sintassi come ad esempio "Classe derivata".

  3. #3
    Inoltre sei subito capitato in uno dei problemi classici del C++ per quanto concerne le classi base: i binary methods.

    codice:
    Base* prova2(Base*);
    Codice come questo comporta un sacco di problemi alle classi derivate per la gestione dei tipi. Evita questi metodi o implementali con un template.
    ...

  4. #4
    Originariamente inviato da Who am I
    scrivi l' hai solo dichiarato come prototipo, ma poi non l' hai implementato.
    Ma la classe derivata non eredita da base, non usi l' ereditarietà e tra l' altro il tuo codice non ha degli errori di sintassi come ad esempio "Classe derivata".
    Era solo un esempio per far capire cosa intendevo, ovviamente è presente sia il prototipo di scrivi che :virtual base ecc ecc.

    Il problema è quello che nn mi riconosce XXX.

    Inoltre se elimino l'ereditarieta e faccio due classi classeUNO(la base di ora) e classeDUE(la derivata), se nel costruttore di classeDUE implemento XXX poi in classeUNO lo posso utilizzare senza nessun problema. Quindi xke con l'ereditarietà mi da errore, come posso superare questo problema visto che sn vincolato all'ereditarietà e a metodi del genere??

    Cmq grazie mille.

  5. #5

    Re: Classe Derivata & Base

    Originariamente inviato da xdaniel2
    Se io ho una classe base e una derivata, nel costruttore della classe derivata posso richiamare un oggetto della classe base che poi vado ad utilizzare nella classe base, esempio:
    L'errore che mi da in quel caso è was not declared in this scope. Nonostante abbia utilizzato gli include...qualcuno puo aiutarmi??
    Grazie a tutti in anticipo!
    Premessa.
    La classe derivata ha visibilità solo sui metodi pubblici e protetti della classe madre, non può accedere a metodi privati.
    La classe base non ha alcuna visibilità sulle classe figlie.

    L'errore
    Come avrai capito certamente capito nella riga che ti dà errore c'é una variabile che non è mai stata dichiarata. Non avendo sottomano il tuo codice posso solo fare supposizioni.
    1) Segnali l'errore nella classe base, cosa c'entra l'include?
    2) Cosa sarebbe XXX? Perché la classe base dovrebbe vederlo se è dichiarato nella classe derivata?
    3) L'ereditarietà pubblica mette in relazione due classi in modo che la classe Derivata possa essere impiegata in luogo della classe Base. Se invece ti interessa la relazione: Classe B ha un oggetto Classe A, allora puoi passare l'oggetto di Classe A come parametro nel costruttore oppure puoi ricorrere all'ereditarietà privata.
    Non si evince nel tuo discorso che la classe derivata debba prendere il posto di quella base, mentre è evidente che abbia parecchie istanze della classe Base. Sicuro di non stare facendo un pasticcio?
    ...

  6. #6
    Utente bannato
    Registrato dal
    Apr 2012
    Messaggi
    510
    Originariamente inviato da xdaniel2
    Era solo un esempio per far capire cosa intendevo, ovviamente è presente sia il prototipo di scrivi che :virtual base ecc ecc.

    Il problema è quello che nn mi riconosce XXX.

    Inoltre se elimino l'ereditarieta e faccio due classi classeUNO(la base di ora) e classeDUE(la derivata), se nel costruttore di classeDUE implemento XXX poi in classeUNO lo posso utilizzare senza nessun problema. Quindi xke con l'ereditarietà mi da errore, come posso superare questo problema visto che sn vincolato all'ereditarietà e a metodi del genere??

    Cmq grazie mille.
    Posta il codice e vediamo qual'è il problema.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.