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

    C++, eventi da classi figlie al padre

    Probabilmente è una banalita' ma non riesco a realizzare in pratica una semplicissima cosa:

    Classe counter che incrementa un contatore (non importa come)
    Raggiunto un bound deve avvisare il padre.

    Pensavo che definendo una funzione all'interno della classe chiamata
    sul raggiungimento del bound, e definendo tale funzione del padre
    il tutto fosse automatico (tipo slot delle QT).

    Come realizzo cio' senza ovviamente passare il puntatore all'oggetto
    del padre? cosa che faccio adesso ma devo definire nella classe figlia un puntatore al padre e includere il padre.h cosa che non
    vorrei fare.

    Grazie per l'attenzione
    Maurizio

  2. #2
    Scusa la mia stupidità ma il tutto mi sembra molto contorto...
    iniziamo col dire due cose: che intendi per padre e figlia? classe base/derivata? Se è cosi il tuo discorso non ha senso. ti spiego perche': una classe derivata da un'altra (la classe base) ha in se la rappresentazione di tale classe quindi non c'è nessun padre da dover avvisare! Quello che tu chiami padre (se ci stiamo riferendo tra basi e derivate) è una parte della classe definitiva (figlia).

    bye
    There are 10 kinds of people in the world: who knows the binary numeration and who not

  3. #3
    Scusa il mio discorso contorto ma provo a descriverlo meglio.
    Io faccio una classe base che per esempio una classe che gestisce un orologio (dotata di timer) che chiamiamo CLOCK.

    Quando istanzio e questa classe essa mi stampa ora e data.
    (per me il padre era la classe che istanzia clock) diciamo quindi che CLOCK e la base e CALENDAR che la usa la derivata, spero sia giusto cosi).

    Ora, doto la classe CLOCK di un metodo si setting di un alarm (un valore espersso in ora:min:sec per esempio).

    Siccome CLOCK vive di vita propria quando raggiunge il valore impostato l'alarm io vorrei saperlo a livello di classe che l'ha istanziata cioè CALENDAR.

    In pratica vorrei fare quello che con il C facevo attraverso le call-back.

    Spero di esser stato piu chiaro.
    Grazie per la tua risposta

  4. #4
    Puoi definire un membro virtuale e ridefinirlo con calendar in questo modo:

    class clock
    {

    public:
    virtual void advice(void);

    ...

    };

    class calendar : public clock
    {

    public:
    void advice(void);

    };

    ovviamente questa tecnica non e' pensata per situazioni del genere però puoi adattarla tu.

    ciao
    There are 10 kinds of people in the world: who knows the binary numeration and who not

  5. #5
    Quando ho letto la tua risposta sono rimasto sulle prime un po' stupito perche' avevo fatto cosi ma non mi funzionava e poi ho capito
    il perche'.... :quipy:

    Non si tratta di classi derivate e classi base .. sorry...

    io ho una classe clock ... definita come nel tuo esempio
    Io ho una classe calendar che è classe derivata da una QT_calendar per
    i form grafici ecc.. comunque calendar e una classe derivata ma non di clock.

    Dentro la classe clalendar istanzio clock: clock cl = new(clock)
    e fin qui tutto bene.... ora metto la virtua void advice(void).

    Se anche in calendar metto void advice() si continua ad eseguire la
    advice di clock e questo penso poiche calendar non è derivata di clock.

    Quindi la domanda sarebbe la seguente (penso)

    Se in una classe "class_A" derivata da "Class_A1" uso cioe istanzio altre classi come faccio a comunicare degli eventi che accadono delle classi istanziate?

    Spero di esser stato piu preciso,
    grazie
    :mavieni:
    charfy

  6. #6
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    [OT] Hai letto il tutorial su linux & c?
    ChReAn
    -------------------

    Slackware 9.1 powered

  7. #7
    No ma grazie .. lo leggero'
    charfy

  8. #8
    Kill-9
    Guest
    Ereditarietà multipla, ecco la soluzione:

    codice:
    class clock 
    { 
    
    public: 
    virtual void advice(void); 
    //da quache parte ci va la fnz che accetta i signal di timer
    
    }; 
    
    class QT_calendar 
    {
    
    };
    
    class calendar : public clock , public QT_calendar
    { 
    
    public: 
    	void advice(void){
    	  //LA NOTIFICA
    	} 
    
    };

  9. #9
    Grazie mille kill-9

    Mi ha evitato di sfogliare e sfogliare...

    Passero subito all'opera ... :adhone:
    charfy

  10. #10
    Utente di HTML.it L'avatar di ChReAn
    Registrato dal
    Aug 2002
    Messaggi
    486
    Originariamente inviato da charfy
    No ma grazie .. lo leggero'
    Ok sorry, è che riportava esattamente l'esempio da te postato (o era su LinuxPro? Boh).
    ChReAn
    -------------------

    Slackware 9.1 powered

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.