zmiennna różnego typu

zmiennna różnego typu
MI
  • Rejestracja: dni
  • Ostatnio: dni
0

Witam,
Tworzę mały projekcik na AVR, mam dwie klasy
Timer, i Alarm(dziedziczy klasę timer)

Kopiuj
 
if(!alarm_mode){	
		
		if(i == 100) { timer.readRTC();}	//every 100 ms
		if (blink && i==50){
			timer.blinkf(blink);
		}
else{
if(i == 100) { alarm.readRTC();}	//every 100 ms
		if (blink && i==50){
			alarm.blinkf(blink);
		}
}
}

Najłatwiej było by sobie przypisać do zmiennej albo obiekt timer, albo obiekt alarm, jednak z tego co wiem to w c++ nie ma takiej możliwości, Jak napisać kod aby nie musieć go powtarzać zmieniając tylko obiekt na jakim działa

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 175
0

Da się to zrobić tylko raczej nie ma sensu katować tym procesor AVR, a jeśli już tak chcesz to poczytaj o dziedziczeniu i funkcjach wirtualnych.

MI
  • Rejestracja: dni
  • Ostatnio: dni
0

ok, zrozumiałem idee funkcji wirtualnych, utworzyłem klase Clock. Jednak nie wiem jak jak wywoływać funkcję readRTC() dla obiektu np timer

Kopiuj
class Clock{
public:
	char active;   //0 - timer, 1-alarm
	Clock();
	void activate(char device=0);
	virtual void blink();
	virtual void readRTC();
};
  • Rejestracja: dni
  • Ostatnio: dni
0

boost::variant
boost::any

adf88
  • Rejestracja: dni
  • Ostatnio: dni
1

Coby AVR'a nie zarzynać, do polimorfizmu można użyć szablonów.

Kopiuj
template <typename T>
void fun(T object)
{
    /* ... */
    object.blinkf(...);
    /* ... */
}

Timer t;
Alarm a;
fun(t);
fun(a);
MI
  • Rejestracja: dni
  • Ostatnio: dni
0

Dzięki za odpowiedź, niestety nie dziła to poprawnie:/
Tzn testowałem w c++ i jest git, jednak na avr (możliwe że dlatego iż funkcja jest wywoływana w timerze) nie działa

M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 175
0

Pokaż więcej kodu, co to konkretnie za avr?

MI
  • Rejestracja: dni
  • Ostatnio: dni
0

atmega32
Już sobie poradziłem tworząc klasę clock z funkcjami wirtulanymi. (zrobilem bez dziedziczenia tylko użyłem externa)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.