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

    [C++] Chiarimenti sull'e forward declarations

    Nel codice:
    codice:
    #ifndef TESTGRAPHCONTAINER_H
    #define TESTGRAPHCONTAINER_H
    
    // INCLUDES
    #include <coecntrl.h>
    
    // FORWARD DECLARATIONS
    class CEikLabel;        // for example labels
    
    // CLASS DECLARATION
    
    /**
    *  CTestGraphContainer  container control class.
    *
    */
    class CTestGraphContainer : public CCoeControl, MCoeControlObserver
        {
        public: // Constructors and destructor
    
            /**
            * EPOC default constructor.
            * @param aRect Frame rectangle for container.
            */
            void ConstructL(const TRect& aRect);
    
            /**
            * Destructor.
            */
            ~CTestGraphContainer();
    
        public: // New functions
    
        public: // Functions from base classes
    
        private: // Functions from base classes
    
           /**
            * From CoeControl,SizeChanged.
            */
            void SizeChanged();
    
           /**
            * From CoeControl,CountComponentControls.
            */
            TInt CountComponentControls() const;
    
           /**
            * From CCoeControl,ComponentControl.
            */
            CCoeControl* ComponentControl(TInt aIndex) const;
    
           /**
            * From CCoeControl,Draw.
            */
            void Draw(const TRect& aRect) const;
    
    
    		/**
    		* From MCoeControlObserver
    		* Acts upon changes in the hosted control's state.
    		*
    		* @param	aControl	The control changing its state
    		* @param	aEventType	The type of control event
    		*/
            void HandleControlEventL(CCoeControl* aControl,TCoeEvent aEventType);
    
        private: //data
    
            CEikLabel* iLabel;          // example label
            CEikLabel* iToDoLabel;      // example label
    
    
        };
    
    #endif
    A che serve la riga evidenziata? CEikLabel è definito in coecntrl.h perchè ridefinirlo?? Se tolgo quella riga, funziona tutto come al solito, quindi a che serve?

    Grazie

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    Se e' nell'include non serve a nulla ...

  3. #3
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Questi tipi di dichiarazioni servono per evitare di fare inclusioni di file e, principalmente, evitare il problema dell'inclusione circolare.

    Quindi con la dichiarazione anticipata, in questo caso, è possibile far funzionare il programma anche senza includere il file che contiene la classe stessa

    La stessa cosa vale con le struct
    codice:
    struct Ciao;
    e quindi con le funzioni
    codice:
    void Ciao(void);
    "Se proprio devono piratare, almeno piratino il nostro." (Bill Gates)

    "Non è possibile che 2 istituzioni statali mi mettano esami nello stesso giorno." (XWolverineX)

    http://xvincentx.netsons.org/programBlog

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 © 2025 vBulletin Solutions, Inc. All rights reserved.