Hallo,
ich möchte von unterschiedlichen Klassen einer Library auf eine gemeinsame Funktion zugreifen.
Folgend mal an einem Beispiel erläutert.
test.h
#ifndef test_h
#define test_h
#include "WProgram.h"
class apfel
{
public:
apfel(int pin);
void kuchen();
private:
int _pin;
};
class birne
{
public:
birne(int pin);
void essen();
private:
int _pin;
};
#endif
test.cpp
#include "WProgram.h"
#include "test.h"
apfel::apfel(int pin)
{
pinMode(pin, OUTPUT);
_pin = pin;
}
void apfel::kuchen()
{
for (int i=0;1<2;i++){
digitalWrite(_pin, HIGH);
delay(1111);
digitalWrite(_pin, LOW);
}
}
birne::birne(int pin)
{
pinMode(pin, OUTPUT);
_pin = pin;
}
void birne::essen()
{
for (int i=0;1<3;i++){
digitalWrite(_pin, HIGH);
delay(1111);
digitalWrite(_pin, LOW);
}
}
void apfel::kuchen und void birne::essen führen die gleiche Aktion unterschiedlich häufig aus. Es wäre ja sauberer beide die folgende Funktion aufrufen zu lassen.
void blink(int pin, int anzahl){
for (int i=0;1<anzahl;i++){
digitalWrite(pin, HIGH);
delay(1111);
digitalWrite(pin, LOW);
}
}
Womit die gesamte test.cpp folgendermaßen aussähe
#include "WProgram.h"
#include "test.h"
apfel::apfel(int pin)
{
pinMode(pin, OUTPUT);
_pin = pin;
}
void apfel::kuchen()
{
blink(_pin,2);
}
birne::birne(int pin)
{
pinMode(pin, OUTPUT);
_pin = pin;
}
void birne::essen()
{
blink(_pin,3);
}
void blink(int pin, int anzahl){
for (int i=0;1<anzahl;i++){
digitalWrite(pin, HIGH);
delay(1111);
digitalWrite(pin, LOW);
}
}
Das produziert aber zeilenweise Fehler. Hat da jemand vielleicht einen Tip für mich, wie ich es schaffe eine gemeinsame Funktion aus unterschiedlichen Klassen zu nutzen?
Gruß
Sebastian