<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Eigenen Logger mit Ableitbaren Klassen für Dateien und Konsole]]></title><description><![CDATA[<p>Guten Abend liebe Leute im Forum,</p>
<p>Ich würde gerne ein Array (in welcher Form auch immer) haben,<br />
dass einen Pointer auf einen Logger (selbstgeschrieben) hat.</p>
<p>Das ist ja noch kein Problem, aber ich würde dort gerne verschiedene<br />
Logger speichern, die z.B. in eine Datei oder Konsole schreiben.</p>
<p>Nun zu meinen Problem:</p>
<p>Wie stelle ich das am besten an, dass ich eine Basisklasse habe,<br />
die im Prinzip noch kein bestimmten Stream hat und sich Ableiten lässt.</p>
<p>In den Abgeleiteten Klassen würde ich einfach ein std::ostream und ein<br />
std::fstream benutzen, nur kann ich da nicht Allgemeine Funktionen schreiben,<br />
weil die Basisklasse ja keinen Stream hat ...</p>
<pre><code>class Logger
{
    void Write(const std::string&amp; text)
    {
        // hier hab ich ja noch keinen Stream
    }

    template&lt;class T&gt; Logger operator&lt;&lt;(T&amp; t)
    {
        // return stream &lt;&lt; t;
        // geht ja nicht, weil ich keinen Stream in Logger habe
    }
};

class ConsoleLogger : Logger
{
private:
    std::ostream&amp; stream;
};

class FileLogger : Logger
{
private:
    std::ofstream stream;
}

std::vector&lt;Logger*&gt; logger;
logger.push_back(new Logger());
logger.push_back(new ConsoleLogger());
logger.push_back(new FileLogger());
</code></pre>
<p>Ich würde halt jetzt gerne in Logger alle Funktionen definieren<br />
und für die Abgeleiteten nutzen.</p>
<p>Vielen Dank für's Durchlesen, ich hoffe es ist alles verständlich</p>
<p>Gruß<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/289976/eigenen-logger-mit-ableitbaren-klassen-für-dateien-und-konsole</link><generator>RSS for Node</generator><lastBuildDate>Tue, 18 Aug 2026 19:44:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/289976.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 16 Jul 2011 17:32:50 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Eigenen Logger mit Ableitbaren Klassen für Dateien und Konsole on Sat, 16 Jul 2011 17:32:50 GMT]]></title><description><![CDATA[<p>Guten Abend liebe Leute im Forum,</p>
<p>Ich würde gerne ein Array (in welcher Form auch immer) haben,<br />
dass einen Pointer auf einen Logger (selbstgeschrieben) hat.</p>
<p>Das ist ja noch kein Problem, aber ich würde dort gerne verschiedene<br />
Logger speichern, die z.B. in eine Datei oder Konsole schreiben.</p>
<p>Nun zu meinen Problem:</p>
<p>Wie stelle ich das am besten an, dass ich eine Basisklasse habe,<br />
die im Prinzip noch kein bestimmten Stream hat und sich Ableiten lässt.</p>
<p>In den Abgeleiteten Klassen würde ich einfach ein std::ostream und ein<br />
std::fstream benutzen, nur kann ich da nicht Allgemeine Funktionen schreiben,<br />
weil die Basisklasse ja keinen Stream hat ...</p>
<pre><code>class Logger
{
    void Write(const std::string&amp; text)
    {
        // hier hab ich ja noch keinen Stream
    }

    template&lt;class T&gt; Logger operator&lt;&lt;(T&amp; t)
    {
        // return stream &lt;&lt; t;
        // geht ja nicht, weil ich keinen Stream in Logger habe
    }
};

class ConsoleLogger : Logger
{
private:
    std::ostream&amp; stream;
};

class FileLogger : Logger
{
private:
    std::ofstream stream;
}

std::vector&lt;Logger*&gt; logger;
logger.push_back(new Logger());
logger.push_back(new ConsoleLogger());
logger.push_back(new FileLogger());
</code></pre>
<p>Ich würde halt jetzt gerne in Logger alle Funktionen definieren<br />
und für die Abgeleiteten nutzen.</p>
<p>Vielen Dank für's Durchlesen, ich hoffe es ist alles verständlich</p>
<p>Gruß<br />
Simon</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093667</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093667</guid><dc:creator><![CDATA[C++Logger]]></dc:creator><pubDate>Sat, 16 Jul 2011 17:32:50 GMT</pubDate></item><item><title><![CDATA[Reply to Eigenen Logger mit Ableitbaren Klassen für Dateien und Konsole on Sat, 16 Jul 2011 17:47:27 GMT]]></title><description><![CDATA[<p>Für solche Probleme wurden virtuelle (bzw pur virtuelle) Methoden erfunden - die Basisklasse liefert nur die abstrakten Methoden deklariert und die abgeleiteten Klassen liefern die konkrete Umsetzung.</p>
<p>Für dich könnte es sogar ausreichen, wenn du eine Methode <code>ostream&amp; getStream()=0;</code> definierst und in den Logger-Methoden verwendest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2093671</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2093671</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Sat, 16 Jul 2011 17:47:27 GMT</pubDate></item></channel></rss>