Dostęp do zmiennych w klasie

User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

Koledzy z racji braku wiedzy proszę o pomoc .
Jest klasa Pluviometer, która ma zdefiniowana zmienną

Code: Select all

 bool reset 
:

Code: Select all

 
 class Pluviometer: public Element {
 public:
  Pluviometer(int pinRain, double rain_factory);  

  static double _currentRainCount;   
  friend void serviceInterruptRain();
  virtual double getValue() ;
  bool reset;
  void iterateAlways();
  void onInit();	


 protected:
	Channel *getChannel() {
		return &channel;
	}
	Channel channel;
	int _pinRain; 	
	double _rain_factory;
	unsigned long lastReadTime;
};
 
w sekcji setup mam zadeklarowane :

Code: Select all


 Supla::Sensor::Pluviometer *Pluvio = new Supla::Sensor::Pluviometer(ConfigESP->getGpio(FUNCTION_PLUVIOMETER),ConfigManager->get(KEY_PLUVIOMETER_FACTORY)->getValueDouble());  
     Pluvio->reset=0;
     
 


Niestety gdy w sekcji "loop" wstawię

Code: Select all

	 Pluvio->reset=1;
Wali błędem

Code: Select all

'Pluvio' was not declared in this scope


Jak to ugryść ? Szukam w necie ale nie potrafię nic znaleść
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)
User avatar
vajera
Posts: 7289
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

Pluvio jest zmienną lokalną widoczną tylko w metodzie setup - musisz ją zadeklarować jako globalną.
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
krycha88
Posts: 5575
Joined: Fri Nov 16, 2018 7:25 am
Been thanked: 5 times

Post

Musisz Supla::Sensor::Pluviometer *Pluvio wyrzuć za sekcję setup aby był globalny. Czyli coś takiego:

Code: Select all

Supla::Sensor::Pluviometer *pluvio;

setup() {
pluvio = new Supla::Sensor::Pluviometer(ConfigESP->getGpio(FUNCTION_PLUVIOMETER),ConfigManager->get(KEY_PLUVIOMETER_FACTORY)->getValueDouble()); 
}
Ale złym zwyczajem jest odwoływać się w taki sposób do zmiennej. Dodaj w tej klasie Pluviometer metody:

Code: Select all

bool getReset() {
return reset;
}

void setReset(bool value) {
reset = value;
}
i wtedy odwołujesz się

Code: Select all

pluvio->getReset();
pluvio->setReset(1);
https://gui-generic-builder.supla.io/
User avatar
Goral64
Posts: 3258
Joined: Fri Dec 27, 2019 6:22 pm
Location: Żerniki Wrocławskie
Has thanked: 2 times
Been thanked: 1 time

Post

Dla zmiennej typu bool można użyć

Code: Select all

bool isReset() {
  return reset;
}
Widzimy się na Supla Offline Party Season 2026 :D

Image
QLQ
Posts: 2512
Joined: Sun Sep 03, 2017 9:13 am

Post

Budujesz deszczomierz inny niż kołyskowy?
jak coś nie działa to włącz zasilanie.....
User avatar
shimano73
Posts: 2174
Joined: Sun Feb 28, 2016 12:27 pm
Location: Orzesze
Been thanked: 1 time

Post

QLQ wrote: Sun Nov 07, 2021 4:50 pm Budujesz deszczomierz inny niż kołyskowy?
Kołyskowy na nowej bibliotece z wykorzystaniem GUI Generic
W elektronice jak nie wiadomo o co chodzi to zwykle chodzi o zasilanie

Wezmę udział w Supla Offline Party 2024 :)

Return to “Arduino IDE”