Listing 1: instrument.h -- declaring abstract class Instrument, GenericInstrument subclass, and Configuration class
1: typedef char Note;
2:
3: class Instrument {
4: public:
5: virtual void playNote(Note key) = 0;
6: };
7:
8: class GenericInstrument : public Instrument {
9: char buf[40]; // maximum size of an Instrument
10: public:
11: virtual void playNote(Note key) {
12: this->playNote(key); // enforce late binding
13: }
14: };
15:
16: class Configuration {
17: public:
18: //...
19: GenericInstrument i;
20: //...
21: };