Beispiel 7: person3.h

21.11.2016 12:30 Uhr
#include <iostream>

using namespace std;
#include "person3.h"

int main()
{
struct person person = { 0 } ;
char sprache;

cout << "Wählen Sie Ihre Sprache:" << endl;
cout << "e = English" << endl;
cout << "d = deutsch" << endl;
cout << "   Ihre Wahl:";
cin >> sprache;

switch(sprache)
   {
case 'e':
   person.ask = askEnglish;
   person.greet = greetEnglish;
   break;
case 'd':
   person.ask = frageDeutsch;
   person.greet = gruesseDeutsch;
   break;
default:
   cout << "I do not know your language / Maybe you know English?";
   person.ask = askEnglish;
   person.greet = greetEnglish;
   break;
   }

cout << "Sie kommen aus:" << endl;
cout << "w = Westeuropa" << endl;
cout << "a = Amerika" << endl;
cout << "r = Rußland" << endl;
cout << "o = Österreich" << endl;
cout << "   Ihre Herkunft:";
cin >> person.herkunft;

(*person.ask)(&person);
(*person.greet)(&person);
}

Beispiel 7: Erläuterungen I


#include <iostream>

using namespace std;
#include "person3.h"

int main()
{
struct person person = { 0 } ;
char sprache;

cout << "Wählen Sie Ihre Sprache:" << endl;
cout << "e = English" << endl;
cout << "d = deutsch" << endl;
cout << "   Ihre Wahl:";
cin >> sprache;

switch(sprache)
   {
case 'e':
   person.ask = askEnglish;
   person.greet = greetEnglish;

Normalerweise wird dieser Mechanismus allerdings zu anderem
genutzt; etwa, um in Abhängigkeit von einer Umweltbedingung, einen Satz von
Funktionen mit solchen zu besetzen, die im Kontetx dieser Umwelt sinnvoll sind
- also z.B., eine für sprachabhängige Kommunikation benötigte "Frage" und 
"Begrüßungsfunktion".
   break;
case 'd':
   person.ask = frageDeutsch;
   person.greet = gruesseDeutsch;
   break;
default:
   cout << "I do not know your language / Maybe you know English?";
   person.ask = askEnglish;
   person.greet = greetEnglish;
   break;
   }

cout << "Sie kommen aus:" << endl;
cout << "w = Westeuropa" << endl;
cout << "a = Amerika" << endl;
cout << "r = Rußland" << endl;
cout << "ö = Österreich" << endl;
cout << "   Ihre Herkunft:";
cin >> person.herkunft;


Dadurch ergeben sich oft spektakuläre Abkürzungen beim Aufruf
von umweltabhängigen Funktionen.
(*person.ask)(&person);
(*person.greet)(&person);
}

Die aktuelle Header-Datei: Siehe Anhang.

Keine Auswirkungen auf die Bibliothek.


Anhang: example7.zip

Schlagwörter: