Hallo,
ich möchte von unterschiedlichen Klassen einer Library auf eine
gemeinsame Funktion zugreifen.
Folgend mal an einem Beispiel erläutert.
Datei Test.h
1 | #ifndef test_h
|
2 | #define test_h
|
3 |
|
4 | #include "WProgram.h"
|
5 |
|
6 | class apfel
|
7 | {
|
8 | public:
|
9 | apfel(int pin);
|
10 | void kuchen();
|
11 | private:
|
12 | int _pin;
|
13 | };
|
14 |
|
15 | class birne
|
16 | {
|
17 | public:
|
18 | birne(int pin);
|
19 | void essen();
|
20 | private:
|
21 | int _pin;
|
22 | };
|
23 |
|
24 | #endif
|
Datei test.cpp
1 | #include "WProgram.h"
|
2 | #include "test.h"
|
3 |
|
4 | apfel::apfel(int pin)
|
5 | {
|
6 | pinMode(pin, OUTPUT);
|
7 | _pin = pin;
|
8 | }
|
9 |
|
10 | void apfel::kuchen()
|
11 | {
|
12 | for (int i=0;1<2;i++){
|
13 | digitalWrite(_pin, HIGH);
|
14 | delay(1111);
|
15 | digitalWrite(_pin, LOW);
|
16 | }
|
17 | }
|
18 |
|
19 | //----------------------------
|
20 |
|
21 | birne::birne(int pin)
|
22 | {
|
23 | pinMode(pin, OUTPUT);
|
24 | _pin = pin;
|
25 | }
|
26 |
|
27 | void birne::essen()
|
28 | {
|
29 | for (int i=0;1<3;i++){
|
30 | digitalWrite(_pin, HIGH);
|
31 | delay(1111);
|
32 | digitalWrite(_pin, LOW);
|
33 | }
|
34 | }
|
void apfel::kuchen und void birne::essen führen die gleiche Aktion
unterschiedlich häufig aus. Es wäre ja schöner beide die folgende
Funktion aufrufen zu lassen.
1 | void blink(int pin, int anzahl){
|
2 | for (int i=0;1<anzahl;i++){
|
3 | digitalWrite(pin, HIGH);
|
4 | delay(1111);
|
5 | digitalWrite(pin, LOW);
|
6 | }
|
7 | }
|
Womit die gesamte test.cpp folgendermaßen aussähe
1 | #include "WProgram.h"
|
2 | #include "test.h"
|
3 |
|
4 | apfel::apfel(int pin)
|
5 | {
|
6 | pinMode(pin, OUTPUT);
|
7 | _pin = pin;
|
8 | }
|
9 |
|
10 | void apfel::kuchen()
|
11 | {
|
12 | blink(_pin,2);
|
13 | }
|
14 |
|
15 | //----------------------------
|
16 |
|
17 | birne::birne(int pin)
|
18 | {
|
19 | pinMode(pin, OUTPUT);
|
20 | _pin = pin;
|
21 | }
|
22 |
|
23 | void birne::essen()
|
24 | {
|
25 | blink(_pin,3);
|
26 | }
|
27 |
|
28 | //----------------------------
|
29 |
|
30 | void blink(int pin, int anzahl){
|
31 | for (int i=0;1<anzahl;i++){
|
32 | digitalWrite(pin, HIGH);
|
33 | delay(1111);
|
34 | digitalWrite(pin, LOW);
|
35 | }
|
36 | }
|
Das kann so aber nicht kompiliert werden. Hat da jemand vielleicht einen
Tip für mich, wie ich es schaffe eine gemeinsame Funktion aus
unterschiedlichen Klassen zu nutzen?
Danke im voraus & Gruß,
Sebastian