Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97

    La difficolta' della programmazione ad oggetti

    Ciao a tutti,
    da anni programmo in C, poi un bel giorno ho deciso di fare il salto ed aggiornarmi, passando cosi' al C++ prima ed in fine al Visual C++
    Devo dire che ho notevoli difficolta' a programmare in Visual C++, a parte la omplessita' del linguaggio, ma la cosa che ogni volta mi ostacola e' l' approccio "ad oggetti".

    Giusto per varvi un esempio, mi sono creato una classe per la gestione di una porta seriale, ma potrebbe essere una qualsiasi classe.

    Vorrei utilizzarla in un semplicissimo progetto chiamato con molta fantasia "Prova" sviluppato come Dialog based ( niente SDI o MDI per semplificare al massimo l' esempio).

    Ebbene MFC di default crea le seguenti classi: CAboutDlg, CProvaDlg e CProvaApp.
    A tale lista si aggiunge la mia classe CSerial.
    Fino qui tutto bene, ma ora non so piu' che strada percorrere,

    Vorrei creare un ogetto ti tipo CSerial, ed utilizzarlo all' interno di varie funzioni di classe CProvaDlg
    es: CProvaDlg::OnButtonSerialRead e CProvaDlg::OnButtonSerialWrite

    Dove posso creare il mio oggetto ?
    In qualsiasi funzione io lo inizializzi, al terminte di quest'ultima l' oggetto verrebbe distrutto.
    E' una sciocchezza per voi espertoni, ma per un principiante autodidatta come me i testi consultati non mi hanno aiutato....

    HELP !!!
    Ciao
    Sergio

  2. #2
    Creala come membro privato di una classe che incapsula un dialog, CProvaDlg, o come membro pubblico della classe-applicazione, CProvaApp, di cui vi è sempre un'istanza (l'oggetto "TheApp").
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97
    ciao, grazie per il suggerimento.
    Non credo di essere riuscito ad afferrarlo, ( sei troppo avanti per me).

    Io ho provato ad creare CSerial come classe derivata da CProvaDlg, ma non riesco comunque a concludere nulla.
    codice:
    class CProvaDlg : public CDialog , private CSerial
    ho inclusa anche serial.h ma il compilatore mi da il messaggio d' errore: 'CSerial' : base class undefined

    Comunque penso tu volessi intendere qualcos' altro.
    Non e' che mi potresti fare un esempio semplice ?

    Se per favore puoi autarmi te ne sarei grato.
    Mi puoi far vedere anche dove sarebbe piu' opportuno creare l' oggetto affinche' in tutte le funzioni di CProvaDlg sia possibile utilizzarlo ?

    Grazie tantissimo.
    Ciao
    Sergio

  4. #4
    No, intendevo dire di aggiungere un'istanza della classa CSerial come campo privato di CProvaDlg (se deve essere usata solamente mentre è attiva questa finestra) o di CProvaApp.
    codice:
    //In CProvaDlg.h
    #include "serial.h"
    class CProvaDlg : public CDialog
    {
    //... qui ci stanno le varie dichiarazioni dei controlli e simili...
    private:
    CSerial serial("COM1); //Ammettendo che accetti un costruttore stringa.
    }
    codice:
    //in una procedura evento di CProvaDlg.cpp
    //...
    serial.transmit(0x10); //Anche qui mi invento un metodo a caso
    //...
    In questo caso l'oggetto serial, campo privato di CProvaDlg, viene istanziato quando viene istanziata la classe CProvaDlg, ossia grosso modo quando viene caricata in memoria la finestra, e distrutto quando viene distrutta CProvaDlg.
    Amaro C++, il gusto pieno dell'undefined behavior.

  5. #5
    Utente di HTML.it
    Registrato dal
    Jul 2001
    Messaggi
    97
    P E R F E T T O !!!
    Ti ringrazio tantissimo per l` aiuto.
    Alla prossima
    Ciao
    Sergio

  6. #6
    Non c'è di che.
    Amaro C++, il gusto pieno dell'undefined behavior.

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.