zmiennna różnego typu

0

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

 
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

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.

0

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

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

boost::variant
boost::any

1

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

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

Timer t;
Alarm a;
fun(t);
fun(a);
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

0

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

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1