Modifica di una variabile da una classe.

Considera questa situazione: abbiamo bisogno di cambiare il valore di una variabile in uno schizzo usando un metodo/funzione di libreria. Ci sono due opzioni: assegnare direttamente o utilizzare un puntatore. Considera entrambe le opzioni in un esempio:
File <ChangeValue.h>
#pragma once
#include <Arduino.h>
class MultiplyTo
     public: 
          int multiplyTo1(int value); 
          void multiplyTo2(int* value); 
     private: 
};

File <ChangeValue.cpp>
#include <ChangeValue.h>  // includere l'intestazione
int MultiplyTo::multiplyTo1(int value) 
     // restituisce il valore moltiplicato per 5 
     return value * 5;
}
void MultiplyTo::multiplyTo2(int* value) 
{
     // moltiplicare variabile per 7 
     *value = *value * 7;
}

File <ChangeValue.ino>
#include <ChangeValue.h>
MultiplyTo multiplyObject;
void setup() 
     Serial.begin(9600); 
     int a = 10; 
     a = multiplyObject.multiplyTo1(a); // a = 50
     Serial.println(a);
     multiplyObject.multiplyTo2(&a); // a = 350
     Serial.println(a);
}
void loop() 
{
}

File keywords.txt
##################################
#Syntax ChangeValue
##################################
#Class (KEYWORD1)
##################################
ChangeValue KEYWORD1
MultiplyTo KEYWORD1
##################################
#Methods and Functions (KEYWORD2)
##################################
multiplyTo1 KEYWORD2
multiplyTo2 KEYWORD2

Nella prima opzione, passiamo il valore della variabile, all'interno del metodo lo moltiplichiamo per 5 e lo restituiamo indietro, e possiamo uguagliare la stessa variabile nello schizzo con il nuovo valore. Nel caso di un puntatore, tutto funziona in modo più interessante: passiamo l'indirizzo di una variabile al metodo, moltiplichiamo questa variabile per 7 all'interno della classe, e il gioco è fatto. In parole povere, in questo esempio: cosa faremo con *value all'interno del metodo - questo si rifletterà immediatamente nella variabile a. Questo argomento può essere sviluppato con questa opzione: possiamo memorizzare l'indirizzo di una variabile nella classe e la classe avrà sempre accesso diretto al valore della variabile, non sarà necessario passarla ogni volta.

File <StoreAddress.h>
#pragma once
#include <Arduino.h>
class MultiplyTo
     public: 
          void fullControl(int* value); 
          void multiplyTo(); 
     private: 
          int *_value; // memorizzare l'indirizzo
};

File <StoreAddress.cpp>
#include <StoreAddress.h> // includere l'intestazione
void MultiplyTo::fullControl(int* value) 
     _value = value;
}
void MultiplyTo::multiplyTo() 
     *_value = *_value * 5;
}

File <StoreAddress.ino>
#include <StoreAddress.h>
MultiplyTo multiplyObject;
int a = 10;
void setup() 
{
     Serial.begin(9600); 
    // passato l'indirizzo della variabile a 
     multiplyObject.fullControl(&a);
    Serial.println(a);  // adesso variabile a = 10
     multiplyObject.multiplyTo(); // qui la variabile a diventa = 50
    Serial.println(a);
     a = 5; 
     multiplyObject.multiplyTo(); // qui la variabile a diventa = 25
    Serial.println(a); 
     multiplyObject.multiplyTo(); // qui la variabile a diventa = 125
    Serial.println(a);
}
void loop() 
{
}

File keywords.txt
##################################
#Syntax StoreAddress
##################################
#Class (KEYWORD1)
##################################
StoreAddress KEYWORD1
MultiplyTo KEYWORD1
##################################
#Methods and Functions (KEYWORD2)
##################################
fullControl KEYWORD2
multiplyTo KEYWORD2

In questo modo la classe ei suoi metodi possono avere il pieno controllo sulla variabile nel programma principale.  
Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia