Erklaerung

source

Lets assume the following 2 classes exist, and that we want to have methodB() as our callback method. From the code we can see that when methodB() is invoked with the paramter of class A, methodB() will then invoke the method output() in class A. The proof that the callback really worked is if we see the line “I am class A :D” in the stdout.

class A{
   public:
    void output() {
       std::cout << "I am class A :D" << std::endl;
    };
};
 
class B{
   public:
    bool methodB(A a) {
       a.output();
       return true;
    }
};

Vorteile

source

  • Non-Coupling - Fundamentales Ziel der Callbacks - Zwei Komponenten, die unabhaengig voneinander designt wurden, koennen zusammen verbunden werden, ohne dass sie voneinander wissen. Wenn dies nicht der Fall ist - also wenn eine Abhaengigkeit eingefuehrt wird - hat der Mechanismus versagt.
  • ?-Operator zum vermeiden von if/else-Konstrukten: (siehe auch ?:):
    condition ? value if true : value if false
  • typedef - This declaration introduces a name that, becomes a synonym for the type given by the type-declaration portion of the declaration. Use it to construct shorter or more meaningful names for types already defined by the language or for types that you have declared.
    (typedef type-declaration synonym;)
  • size_t - typen-definition
  • Klasse - alle Worte beginnen gross (ThisIsASpecialClass)
  • Symbole - alles Grossbuchstaben (THISISASYMBOL)
  • Funktionen - erster Buchstabe klein, Rest Gross (thisIsAFunction)
  • Variablen - alles klein (variable)

  • bool - true or false
  • char - zeichen (a, z, 9, etc.) ueblicherweise ein byte
  • int - ganze zahl (1, 42, 1324) Groesse durch Rechner vorgegeben (1 Wort)
  • double - doppelt genaue Gleitkommazahl (3.14, 299973.0)
  • || sowie &&: falls 1 true ist, werden restliche nicht mehr geprueft, denn dann ist die eindeutige Entscheidung ja schon erreicht.

Code-Beispiel:

class ProjectionProcessor {
 
private:
 
public:
  typedef enum CorrectionMode {
    OFF = 0, // no  correction
    DARKFIELD = 1, // only apply darkfield correction
    FLATFIELD = 2, // 
...
};
  • private - nur funktionen, die in der deklaration spezifizier sind, koenne zugreifen
  • public - alle funktionen koennen zugreifen