Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    16

    [c++]Come passare i dati da una classe all'altra?

    ciao a tutti..
    Il mio problema è questo: in una classe chiamata Cluster devo chiamare un metodo (getAvailability() )della classe Nodo ( il metodo nella classe nodo si chiama allo stesso modo getAvailability() ).
    Nella Classe cluster devo salvare un array con tutti i risultati della chiamata del metodo della classe nodo.
    Gli oggetti nodo sono salvati in un array cluster_node[i];
    quindi procedo cosi:
    ---Nella Classe Cluster---
    int ClusterNodi::getAvailability()
    {
    for (int t=0;t<n_nodi;t++){
    cout << cluster_nodes[t]-> getAvailability() <<endl;

    return cluster_nodes[t]-> getAvailability();
    }

    }
    ---Nella Classe Nodo---
    int Nodo::getAvailability()
    {

    return availability;

    }
    dove availability è un membro della classe...e viene settato in un altro metodo:
    void Nodo::setAvailability(int _availability)
    {

    availability=_availability;
    }

    ....Tuttavia i dati nell'array cluster_node[i] non risultano essere quelli impostati?
    Qualcuno puo' aiutarmi??grazie!!

  2. #2
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    codice:
    int ClusterNodi::getAvailability() {
       for (int t=0;t<n_nodi;t++) {
          cout << cluster_nodes[t]-> getAvailability() <<endl;
    
         return cluster_nodes[t]-> getAvailability();
       }
    
    }
    Così ritorni sempre cluster_nodes[0]-> getAvailability(); è voluto?

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    16
    no...!
    vorrei cluster_node[0] poi cluster_node[1], cluster_node[2]...ecc

  4. #4
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Allora non puoi mettere il ciclo dentro la funzione.
    O indicizzi la ClusterNodi::getAvailability() facendola diventare
    ClusterNodi::getAvailability(int index)
    oppure ritorni l'intero array e lo analizzi fuori.
    Personalmente ritornerei un opportuno vector in questo caso.


    Potresti anche fare un overloading dell'operatore [] su ClusterNodi

    int ClusterNodi:perator[](int index) {
    return cluster_nodes[index]-> getAvailability()
    }

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    16
    c'è anche una funzione setAvailability()...forse nemmeno questa è giusta?

    void ClusterNodi::setAvailability()
    {

    for (int t=0;t<n_nodi;t++)

    //esempio di disponibilità;
    cluster_nodes[0]-> setAvailability(5);
    }

  6. #6
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Originariamente inviato da lion2684
    c'è anche una funzione setAvailability()...forse nemmeno questa è giusta?
    codice:
    void ClusterNodi::setAvailability() {
       for (int t=0;t<n_nodi;t++)
         //esempio di disponibilità;
         cluster_nodes[0]-> setAvailability(5);
    }
    A vederla così no. Fai un ciclo per inizializzare 5 volte cluster_nodes[0] a 5 il che non ha senso.

    codice:
    void ClusterNodi::setAvailability() {
       for (int t=0;t<n_nodi;t++)
         //esempio di disponibilità;
         cluster_nodes[t]-> setAvailability(5);
    }
    Così ha un senso, anche se non credo che debbano valere tutti 5 la versione corretta sarebbe :
    codice:
    void ClusterNodi::setAvailability(int pos, int avail) {
         cluster_nodes[pos]-> setAvailability(avail);
    }

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    16
    grazie mille!
    volendo usare due volte operato è possibile?
    perche oltre a:
    int ClusterNodi:perator[](int index)
    {
    return cluster_nodes[index]-> getAvailability() ;

    }


    puo' andare cosi':

    unsigned int ClusterNodi::getSerials(int index)
    {

    return cluster_nodes[index]-> getSerial() ;

    }


    ...deve tirare fuori il seriale dell'oggetto di indice index...

  8. #8
    Utente di HTML.it L'avatar di shodan
    Registrato dal
    Jun 2001
    Messaggi
    2,381
    Si. Ovviamente se vuoi evitare di sforare l'array dovrai mettere un controllo sull'indice.

    Tieni presente che se all'interno di un ciclo metti un return la funzione termina immediatamente (riferito ai primi listati)

  9. #9
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    16
    ah,ok! grazie ancora!

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.