Guten Abend miteinander,
Vielleicht könnt ihr mir helfen, ich komme nichtmehr weiter.
Ich möchte gerne in C++ eine Klasse für einen Hardwaretimer schreiben.
Dieser Timer hat einen Counter und eine Interrupt Unit. Soweit so gut,
dass lässt sich ja relativ einfach umsetzen. Zusätzlich hat der Timer
nun aber 4 CaptureCompare-Kanäle. Diese möchte ich gerne als separate
Objekte ansprechen und trotzdem sollen sie sich wie ein eigenständiger
Timer verhalten. Wenn ich jetzt die Timer-Klasse als Basis-Klasse nehme
und davon die CaptureCompare-Kanäle ableite
1 | class Timer {};
|
2 | class CaptureCompare:public Timer{}
|
dann habe ich das Problem, dass ich bei 4 Kanälen quasi auch 4 Instanzen
der Basisklasse erstelle und das erschwert das Interrupt Handling.
Wenn ich nun die CaptureCompare Klasse nicht ableite
1 | class Timer {};
|
2 |
|
3 | class CaptureCompare{
|
4 | private:
|
5 | Timer *timer;
|
6 | public:
|
7 | void startTimer(void){
|
8 | timer->startTimer();
|
9 | }
|
10 | }
|
kann ich sie nur dann wie die Basisklasse behandeln, wenn ich alle
Funktionen der Basisklasse auch dort implementiere.
Ich glaube ich sehe den Wald vor lauter Bäumen nicht mehr.
Könnt ihr mir bitte helfen?