Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Problema Funzione C++

  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2008
    Messaggi
    19

    Problema Funzione C++

    Sto programmando a moduli e ho 3 classi.

    Il mio problema è ke io voglio usare una solita funzione in tutte e tre le classi e non voglio dichiararla globale .

    Per farvi capire meglio

    PROGRAMMA 1.H
    class A{
    ....
    ....
    public:
    void funzione();
    };

    Io voglio riutilizzarla anke in

    class B{
    ....
    ....
    ....};

    e

    class C{
    ....
    ....
    ....};

    Come posso fare???.... come devono essere i file di inclusione..(#include ?) GRAZIE

  2. #2
    In C++ meglio distinguere i metodi dalle funzioni.
    Da quel che si capisce sembra che tu voglia condividere un metodo in tre classi.
    Una possibile soluzione (ma ce ne sono altre) potrebbe essere quella di rendere il metodo da condividere, membro di una super classe, da cui andrai a derivare le classi che ne abbisognano (nel tuo caso le classi A, B e C).

  3. #3
    Utente bannato
    Registrato dal
    Apr 2008
    Messaggi
    196
    Devi usare l'ereditarietà o il polimorfismo..

  4. #4
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Se non hai particolari richieste puoi fare

    codice:
    class A
    {
       public:
                int Funzione(arg1,arg2);
    };
    
    class B
    {
         public:
            int Funzione(arg1,arg2) {return A::Funzione(arg1,arg2);}
    }
    Se usi Visual C++ buttaci dietro un __forceinline
    "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

  5. #5
    Originariamente inviato da XWolverineX
    Se non hai particolari richieste puoi fare

    codice:
    class A
    {
       public:
                int Funzione(arg1,arg2);
    };
    
    class B
    {
         public:
            int Funzione(arg1,arg2) {return A::Funzione(arg1,arg2);}
    }
    Se usi Visual C++ buttaci dietro un __forceinline
    Per fare ciò che dici, A::Funzione DEVE essere statica..

    EDIT: A::

  6. #6
    Utente di HTML.it L'avatar di XWolverineX
    Registrato dal
    Aug 2005
    residenza
    Prague
    Messaggi
    2,563
    Vero.
    Pensavo che le funzioni di una classe fossero automaticamente statiche.
    "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

  7. #7
    Non puo usare la parola chiave friend???

    Basta dichiarare le classi b c come friend della classe A di cui vuoi usare i metodi!

    O sbaglio?? Per evitare l'ereditarieta...

  8. #8
    Originariamente inviato da PeppePes88
    Non puo usare la parola chiave friend???

    Basta dichiarare le classi b c come friend della classe A di cui vuoi usare i metodi!

    O sbaglio?? Per evitare l'ereditarieta...
    Provaci e ti risponderai da solo ;-)

  9. #9
    Hai ragione...
    Bisognerebbe dichiarare il membro che vuoi usare come statico se non non serve a niente!
    GIUSTO???

    Se ti puo interessare posto il codice:
    codice:
    class A {
    	static void stampa() { cout << "CIAO" << endl; };
    	friend class B;
    };
    
    class B {
    	public:
    	void s() { A::stampa();}
    };
    
    int main () {
    	B prova; 
    	prova.s();
    	return 0; 
    }
    Ciao

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.