C++ accesso a metodi

di il
4 risposte

C++ accesso a metodi

Buongiorno, ho iniziato da poco a programmare con C++ e ho avuto un piccolo problema con l'uso delle classi, mi spiego meglio:

1. ho definito una prima classe chiamata domain in cui ho definito variabili e funzioni;
2. ho definito una seconda classe cell in cui ho definiti altre variabili e funzioni.


Il problema si pone nel momento in cui scrivo una funzione in cell e devo accedere al vettore Fest definito e presente in domain. Riporto la parte di codice in cui si verifica il problema:
    void cell::compU(){
    
     for (int d=0; d<nU; d++){
         U[d]=(cf[d] + domain.Fest[d]/2.0 )*rho;
      }   
    }
L'errore prodotto è: cell.cpp:123:25: error: expected primary-expression before '.' token.

Vorrei capire se commetto un errore nel momento in cui cerco di accedere alla variabile usando l'operatore "." oppure cos'altro.

Ho provato anche ad impiegare la scrittura domain::Fest ma a quel punto il compilatore mi costringe a usare la parola chiave static che causa altre complicazioni.

Vi ringrazio in anticipo dell'aiuto

4 Risposte

  • Re: C++ accesso a metodi

    Se Fest è accessibile (non è private) e non è static devi accederci così:
    
        void cell::compU(){
        
         for (int d=0; d<nU; d++){
             U[d]=(cf[d] + Fest[d]/2.0 )*rho;
          }   
        }
    
    
    Riguardati l'accesso ai dati delle classi base quando sono ereditate.
  • Re: C++ accesso a metodi

    1) o erediti dalla classe a cui vuoi accedere,
    2) passi un reference
    3) puoi passare un puntatore

    1)
    struct A { int q; };

    struct B: public A {
    B() { int a = q; }
    };

    2)
    struct A { int q; };
    struct B { B(A& a) { int x = a.q; } };
    A a;
    B b(a);

    Codice non compilato, ma per render l'idea.
  • Re: C++ accesso a metodi

    Perfetto, vi ringrazio. La soluzione migliore è stata passare negli argomenti della funzione un puntatore.
    ora funziona come dovrebbe
  • Re: C++ accesso a metodi

    Bene

    nota che in C++ ove possibile si preferiscono i reference ai puntatori, offrono alcune garanzie.
    Usare i puntatori non e' vietato, alcune policy tipo quella di google addiritura li vietano (se non ricordo male, o li scoraggiano), castrando cosi le possibilita' offerte dal linguaggio.
    Se li usi da attenzione al controllo NULL, e ai delete (memory leaks) ove servano.

    Ciao
Devi accedere o registrarti per scrivere nel forum
4 risposte