Domanda

Questo problema mi ha coinvolto di non sapere abbastanza di C++.Sto cercando di accedere a un valore specifico che io avevo messo nel Mucchio, ma io sono sicuro di come accedervi.Nel mio problema, io avevo messo un valore in un heap da un membro di dati funzione di un oggetto, e sto cercando di accedere a un altro membro di dati funzione.Il problema è che non so come, e avevo cercato esempi online, ma nessuno era quello che mi serviva, erano tutti in int main() e non sono stati in particolare quello che mi serviva.

Nel primo membro di dati funzione, dichiaro il valore voglio essere inviati all'Heap;Ecco un esempio di quello che i miei dati prima di una funzione membro.

void Grid::HeapValues()
{
    //Initializing Variable
    value = 2; //The type is already declared

    //Pointers point a type towards the Heap
    int* pValue = new int;

    //Initialize  an a value of in the Heap
    *pValue = value;
}

Dati e funzione membro è Questo che vogliono:

void Grid::AccessHeap()
{
    //Extracting heap:
    int heap_value = *pValue; //*pValue does not exist in this function
    cout << heap_value; //Delays the value 2, which is found
                        //in the first data member function
}

Mi sento stupido per chiedere, ma non riesco a trovare le risposte e non come.Qualcuno sa come accedere a un valore dal mucchio in modo semplice?E avrei bisogno di essere in grado di accedere a più di due dati funzione membro.

È stato utile?

Soluzione

pValue deve essere membro di una variabile di classe Griglia.

class Grid
{
  private: int* pValue;
  public: void HeapValues();
          void AccessHeap();
};

Ora i membri variabile pValue è accessibile da qualsiasi membro-funzione di Griglia.

Altri suggerimenti

Non dimenticate di cancellare il tuo puntatore del distruttore, quando si è fatto.Per ulteriori informazioni visitare il sito:

Come Aaron dice che si può assumere il valore di un membro della classe di Griglia.In questo caso se non c'è bisogno di essere un puntatore a int.

class Grid
{
private:

    int value;

public:

    void HeapValue();
    void AccessHeap();
};

Il valore verrà memorizzato come parte dell'oggetto, laddove è istanziati.Si può fare in pila o l'heap, non importa.Per valori semplici come il built in tipi e Oggetti che saranno di proprietà di un'istanza della classe non è necessario allocare le loro risorse nuove.In questo modo non è necessario preoccuparsi di pulizia con l'operatore delete nella Griglia distruttore, basta assicurarsi di disporre di possedere istanza della Griglia correttamente ;-)

Ovviamente ci sono eccezioni a questo che si impara man mano che si procede più in C++, ma per l'esempio di cui sopra andrà bene.

Perché vuoi sul mucchio?Se si aggiunge come parte della classe quindi sarà nello stesso luogo la classe, possibilmente sullo stack o in memoria globale.Forse si vuole avere una dimensione variabile per il vostro puntatore ad intero?In quel caso, allora avete bisogno di essere sicuri di deallocare la memoria quando hai finito con esso.

Il problema con la roba sul mucchio è a trovarla.Non c'è accesso per nome, a meno che non si aggiunge un meccanismo che.In qualche modo è necessario comunicare la posizione di qualsiasi codice per accedervi.In questo caso, sembra che hai solo bisogno di accedere all'interno della Griglia di classe, in modo da è facile.Basta mettere in una variabile membro come Aaron indica.Si potrebbe finire con qualcosa di simile:

class Grid
{
protected:
    int* pVals;
public:
    Grid() pVals(NULL) { }
    ~Grid() { delete [] pVals; }
    void HeapValues() {
        pVals = new int[getHeapValuesSize()];
        pVals[0] = 1; // ...
    }
    void AccessHeap() {
        cout << pVals[0]; // ...
    }

(Su un lato nota, sembra che si utilizza la frase "dati funzione membro" quando intendi con "funzione membro"."Il membro dei dati" si riferisce a dati del membro di una classe, come pVals, ma io non sono sicuro di quello "dati funzione membro" vorresti dire.)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top