<?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[operator über Zeiger aufrufen]]></title><description><![CDATA[<p>Hallo!<br />
Ich hab da ein kleines Problemchen.<br />
Ich will eine Klasse schreiben, die bei Bedarf ein Logbuch führt.<br />
Die Klasse des Logbuches ist schon fertig und funtioniert ohne Probleme.<br />
Jetzt mein Problem: Wie soll ich das anstellen, dass nur bei Bedarf ein Logbuch geführt wird?</p>
<p>Ich hatte da schon so einen Plan:</p>
<pre><code class="language-cpp">class CKlasse
{
private:
    CLog *m_pLog; //Pointer auf Klasse das Logbuches
    BOOL m_bUseLog; //Logbich führen?
public:
    ~CKlasse() { delete m_pLog; }
    CKlasse(BOOL bUseLog)
    {
        if(bUseLog)
            m_pLog=new CLog(&quot;Logbuch.txt&quot;);
        else
            m_pLog=NULL;
        m_bUseLog=bUseLog;
    }
};
</code></pre>
<p>Das würde klappen, bloß: Wie benutzt ich dann überladene Operatoren des Logbuches, wie z.B. operator&lt;&lt;? Bei Funktionen: -&gt;Funktion(...);, bei Operatoren vieleicht -&gt;operator&lt;&lt;...;<br />
Wenn ich statt einem Pointer eine Referenz benutze, wie kann ich dann im Konstruktor ein Objekt anlegen, was nicht gelöscht wird sobald der Konstruktor endet?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/194823/operator-über-zeiger-aufrufen</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 17:00:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/194823.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 11 Oct 2007 10:00:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to operator über Zeiger aufrufen on Thu, 11 Oct 2007 10:00:20 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Ich hab da ein kleines Problemchen.<br />
Ich will eine Klasse schreiben, die bei Bedarf ein Logbuch führt.<br />
Die Klasse des Logbuches ist schon fertig und funtioniert ohne Probleme.<br />
Jetzt mein Problem: Wie soll ich das anstellen, dass nur bei Bedarf ein Logbuch geführt wird?</p>
<p>Ich hatte da schon so einen Plan:</p>
<pre><code class="language-cpp">class CKlasse
{
private:
    CLog *m_pLog; //Pointer auf Klasse das Logbuches
    BOOL m_bUseLog; //Logbich führen?
public:
    ~CKlasse() { delete m_pLog; }
    CKlasse(BOOL bUseLog)
    {
        if(bUseLog)
            m_pLog=new CLog(&quot;Logbuch.txt&quot;);
        else
            m_pLog=NULL;
        m_bUseLog=bUseLog;
    }
};
</code></pre>
<p>Das würde klappen, bloß: Wie benutzt ich dann überladene Operatoren des Logbuches, wie z.B. operator&lt;&lt;? Bei Funktionen: -&gt;Funktion(...);, bei Operatoren vieleicht -&gt;operator&lt;&lt;...;<br />
Wenn ich statt einem Pointer eine Referenz benutze, wie kann ich dann im Konstruktor ein Objekt anlegen, was nicht gelöscht wird sobald der Konstruktor endet?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1382699</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1382699</guid><dc:creator><![CDATA[U(n)do]]></dc:creator><pubDate>Thu, 11 Oct 2007 10:00:20 GMT</pubDate></item><item><title><![CDATA[Reply to operator über Zeiger aufrufen on Thu, 11 Oct 2007 10:08:53 GMT]]></title><description><![CDATA[<p>Du kannst den Zeiger jederzeit dereferenzieren, wenn du seine Member nutzen willst: [c]*m_pLog&lt;&lt;&quot;Log-Ausgabe&quot;;/c]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1382710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1382710</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 11 Oct 2007 10:08:53 GMT</pubDate></item><item><title><![CDATA[Reply to operator über Zeiger aufrufen on Thu, 11 Oct 2007 10:18:08 GMT]]></title><description><![CDATA[<p>Meiner Meinung nach ist das Verwenden von Zeigern hier überflüssig. Das ginge auch mit Referenzen.</p>
<p>Mein Vorschlag:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;
using namespace std;

class Foo
{
private:
    ostream&amp; out;
    bool log;

public:
    Foo()
        : out(std::clog), log(false)
        { }

    Foo(ostream&amp; out, bool log)
        : out(out), log(log)
        { }

    void doSomething()
        {
            // ... do something
            if(log) out &lt;&lt; &quot;I've done something&quot; &lt;&lt; endl;
        }
};

int main(int argc, char** args)
    {
        Foo foo;
        Foo bar(cout, true);

        foo.doSomething();  // doesn't log
        bar.doSomething();  // does log

        cin.get();
        return 0;
    }
</code></pre>
<p>OT: Ich bin immer noch der Meinung dass diese m_-Präfixe den Code &quot;unlesbarer&quot; gestalten. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Grüße...</p>
<p>Heiko</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1382720</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1382720</guid><dc:creator><![CDATA[bwbg]]></dc:creator><pubDate>Thu, 11 Oct 2007 10:18:08 GMT</pubDate></item></channel></rss>