// Basisklasse fuer alle Artikel
// Verwaltet die Artikelnummer

module;
#include <iostream>
#include <string>
#include <string_view>

export module Artikel;

// Definition der Artikelklasse
export class Artikel
{
    // Da die Eigenschaften const sind, ist der
    // Zugriff darauf von abgeleiteten Klassen unkritisch
protected:
    const char type;      // Artikeltyp: 'M'= Monitor, 'K'=Keyboard
    const std::string     name;       // Name
    const unsigned long   nummer;     // Nummer
    inline static unsigned long anun{1};   // Zaehler Artikelnummer
public:
    // Standard-ctor fuer Felddefinitionen
    Artikel() = default;
    // ctor, erhaelt Typ und Name und inkrementiert
    // die Artikelnummer
    Artikel(const char t, std::string_view n) : type(t), name(n), nummer(anun++)
    { }
    // Typ zurueckgeben
    const char GetType() const
    {
        return type;
    }
};
