Ciao a tutti , vi faccio una domanda, sto utilizzando una classe che ho fatto all'interno del loop e fino a qua va tutto bene, ma per rendermi le cose meno lunghe nel loop volevo creare una void () utilizzandola nel loop e all'interno della void utilizzare la classe che ho creato.
E possibile utilizzare una classe all'interno di una funzione?
Grazie mille per l'aiuto.
Una classe dichiarata in testa al programma viene vista ovunque.
E' come dire int o float; è il "tipo" di una variabile.
Una variabile di tipo int o un oggetto di tipo classe se dichiarato in testa al programma è globale e visto ovunque.
Arduino si programma in C++, cerca un testo di programmazione C++, leggi sezione dichiarazione variabili, visibilità e scope.
Ciao e grazie per la risposta, l' altra volta con gli array e grazie alla tua risposta sono riuscito a risolvere quel problema ma con questo ho delle difficolta', ho letto sugli scope e anche sulla funzione friend ma non mi funziona niente.
Io ho fatto una classe casa con oggetti maria dove c'e' maria::calcolo, se la uso sul loop maria.calcolo(Val1) tutto bene ma se faccio una funzione in un file .h dove file.h lo includo nello sketch:
#pragma once
#include <Arduino.h>
void funzione(int&);
void funzione(int& Val1)
{
maria.calcolo(Val1); dove val1 gli do un valore
}
e la richiamo nel loop funzione(valore); dove valore e' un int
maria was not declared in this scope
Devi vedere la dichiarazione di variabili tra file diversi.
Quello è più complicato ed inoltre Arduino IDE compila (se non ricordo male) in maniera un pò "strana", si può usare il comando extern.
Normalmente un programma in C++ (o C) composto da molti file hai un ambiente con un progetto (raccolta di quali file hai) oppure un file make (esempio du Linux) che compila i file in una certa maniera.
Arduino raccoglie i sorgenti (anche delle librerie) in una sottocartella ma pare compila un file alla volta.
Dal punto di vista della programmazione però non è molto pulito avere una funzione che un pò ha parametri e un pò si basa su variabili globali. O non passi parametri e quindi lavori su variabili globali, oppure passi tutto tramite parametri, anche il tuo oggetto maria (parametro p_obj di tipo classe casa)