Library Frage, Klassen & gemeinsamer Zugriff

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

Die Funktion blink() ist in den Klassen nicht bekannt. Wenn man blink schon am Anfang deklariert klappt alles super.
Somit sähe der funktionsfähige Code für die test.cpp so aus:

#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);
  }
}