Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Richiamare Un Oggetto Già Inizializzato

    Save, sono nuovo di c++ e mi sorge un dubbio, magari molto stupido, che però non so come affrontare.
    Vorrei semplicemente accedere all'istanza di una classe (quindi un oggetto) che sia stata già inizializzata nelle sue variabili.
    Nel mio caso ho inizializzato una classe application, all'interno dell'implementazione del metodo di un altra classe:
    codice:
    ciao::metodo(){
    ...
    application MyApplication;
    MyApplication.velocita = 2;
    ...
    }
    e ho inizializzato una delle sue variabili. A questo punto vorrei poter richiamare lo stesso oggetto,all'interno di un'altra classe con le variabili aggiornate precedentemente rimaste tali.

    In poche parole voglio che il mio oggetto rimanga in memoria per eventuali aggiornamenti di stato, finchè non decido di cancellarlo! Grazie.

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Se lo crei all'interno di quel metodo, l'oggetto non esisterà più all'uscita del metodo stesso.

    Usa un puntatore all'oggetto, crea l'oggetto dinamicamente e passa il puntatore dovunque ti serva.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Grazie, ho capito. Potresti essere così gentile da mostrarmi il codice di come si inizializza un oggetto con il puntatore e soprattutto come si riaccese allo stesso oggetto in un secondo momento? grazie!

  4. #4
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Con un puntatore

    application *pApp;

    pApp = new MyApplication();

    e poi, quando ti serve, passi pApp dove vuoi (anche se molto dipende da come hai organizzato il tuo codice ...)
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  5. #5
    Per passo pApp, intendi questo?
    codice:
    pApp->velocita = 3;

  6. #6
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Per "passare" intendo dire "fornire" il puntatore agli altri oggetti.

    Una volta ottenuto il puntatore, puoi scrivere

    pApp->velocita = 3;

    per modificare i membri (cmoe velocita).

    Per capire meglio, mostra il codice effettivo e completo dove trovi difficoltà.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  7. #7
    Il problema xo è che se io voglio puntare l'oggetto e crearlo in una determinata classe, poi se volessi riaccedervi all'interno di un'altra classe, semplicemente scrivendo:
    codice:
     ciao = pApp->velocita;
    Giustamente mi esce l'errore: pApp was not declared on this scope!

    E' questo il punto che vorrei risolvere!!! Come posso riaccedere a quell'oggetto, precedentemente inizializzato?

  8. #8
    Devi salvare il suo indirizzo in un puntatore, per esempio




    codice:
    void f(App* app, int uno, int due) {
       App* applicazione = new App();
       applicazione->velocita`= uno;
       app = applicazione
    
    }
    
    App *a;
    f(a,4,5);
    a->velocita sarà uguale a 4

  9. #9
    scusami ma non ho capito a cosa si riferisce int due.

  10. #10
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,481
    Sono esempi di parametri di un metodo qualsiasi ... solo esempi, non ti soffermare su quello ...

    Ti ripeto ... devi passare il puntatore all'oggetto istanziato alla funzione che vuoi tu ... ovviamente è una indicazione generica ... per capirci meglio mostra il codice che concretamente usi e con cui vuoi fare quanto chiedi.

    Altrimenti continuerai a non capire e non risolverai ...
    No MP tecnici (non rispondo nemmeno!), usa il forum.

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