// Im diesem Beispiel sind die Basisklasse und die
// davon abgeleiteten Klassen in verschiedenen
// Moduldatei definiert

#include <iostream>
#include <fstream>

import ArtikelType;

constexpr int SIZE = 3;     // Groesse des Artikelfeldes

// main() Funktion
int main()
{
    // Feld fuer Zeiger auf Monitor-Objekte
    Artikel* pLager[SIZE];

    // 3 Artikel definieren
    pLager[0] = new Monitor("ASUS", 27);
    pLager[1] = new Keyboard("Microsoft", Keyboard::DE);
    pLager[2] = new Monitor("Alienware", 32);

    // Daten ausgeben
    for (auto elem : pLager)
        std::cout << *elem;


    // Daten in Datei ablegen
    std::ofstream outFile("c:/temp/xxx.txt");
    if (!outFile)
    {
        std::cout << "Fehler beim Oeffnen der Datei!!\n";
    }
    else
    {
        for (auto elem : pLager)
            outFile << *elem;
        // Datei auch wieder schliessen!
        outFile.close();
    }

    // Artikel im Feld wieder loeschen!
    for (auto& elem : pLager)
        delete elem;
}
