<?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[Klassenzugriff]]></title><description><![CDATA[<p>Hi,</p>
<p>noch mal eine Frage von mir bezüglich zugriff auf Klassen, dass ich noch nicht verstehe.</p>
<p>Folgenes Beispiel:</p>
<p>Klasse &quot;Utils&quot; öffnet im Konstruktor eine Datei und stellt die Methode &quot;Log&quot; zur verfügung in der ein als Parameter übergebener String in die offene Datei gespeichert wird.</p>
<p>Klasse &quot;A&quot; tut nun was und ruft die Methode &quot;Utils::Log&quot; auf, um etwas in die Datei zu speichern.</p>
<p>Nun ist Klasse &quot;B&quot; an der Reihe und möcht auch was in die Datei speichern. Also Objekt &quot;Utils&quot; erstellt und Methode &quot;Log&quot; aufgerufen.</p>
<p>AAAAber, jetzt wird die Datei ja wieder geöffnet. Wäre doch viel besser, wenn die Datei immer offen wäre, dafür müsste ich aber - nach meinem momentanen Wissen - die Datei nicht im Konstruktor öffnen, sondern in einer weiteren Methode &quot;open&quot;, diese dann von Klasse &quot;A&quot; aufrufen, und den Dateihandle an Klasse &quot;B&quot; weitergeben, der damit die Methode &quot;Log&quot; aufruft und so weiter.</p>
<p>Das kanns ja auch nicht sein.</p>
<p>Jemand eine Idee, wie das am glücklichsten zu bewerkstelligen ist?</p>
<p>Grüße euch<br />
Maddes</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/165784/klassenzugriff</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 01:50:39 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/165784.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 23 Nov 2006 07:39:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 07:39:30 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>noch mal eine Frage von mir bezüglich zugriff auf Klassen, dass ich noch nicht verstehe.</p>
<p>Folgenes Beispiel:</p>
<p>Klasse &quot;Utils&quot; öffnet im Konstruktor eine Datei und stellt die Methode &quot;Log&quot; zur verfügung in der ein als Parameter übergebener String in die offene Datei gespeichert wird.</p>
<p>Klasse &quot;A&quot; tut nun was und ruft die Methode &quot;Utils::Log&quot; auf, um etwas in die Datei zu speichern.</p>
<p>Nun ist Klasse &quot;B&quot; an der Reihe und möcht auch was in die Datei speichern. Also Objekt &quot;Utils&quot; erstellt und Methode &quot;Log&quot; aufgerufen.</p>
<p>AAAAber, jetzt wird die Datei ja wieder geöffnet. Wäre doch viel besser, wenn die Datei immer offen wäre, dafür müsste ich aber - nach meinem momentanen Wissen - die Datei nicht im Konstruktor öffnen, sondern in einer weiteren Methode &quot;open&quot;, diese dann von Klasse &quot;A&quot; aufrufen, und den Dateihandle an Klasse &quot;B&quot; weitergeben, der damit die Methode &quot;Log&quot; aufruft und so weiter.</p>
<p>Das kanns ja auch nicht sein.</p>
<p>Jemand eine Idee, wie das am glücklichsten zu bewerkstelligen ist?</p>
<p>Grüße euch<br />
Maddes</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179695</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179695</guid><dc:creator><![CDATA[Maddes]]></dc:creator><pubDate>Thu, 23 Nov 2006 07:39:30 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 07:57:55 GMT]]></title><description><![CDATA[<p>Was genau hast du vor? Wenn jeder Anwender eine eigene Log-Datei benötigt, klappt der Ansatz mit dem Konstruktor eigentlich ganz gut. Wenn alle Anwender in die selbe Datei loggen sollen, könntest du ein statisches Element verwenden, das als Ziel dient (öffnen müsstest du die Datei in einer eigenen open()-Methode oder beim ersten Aufruf von log()).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179701</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 23 Nov 2006 07:57:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 08:17:25 GMT]]></title><description><![CDATA[<blockquote>
<p>statisches Element</p>
</blockquote>
<p>das Isses <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Danke für den Tipp, habs noch mal nachgelesen und ich denke - das ist genau das was ich suche <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179715</guid><dc:creator><![CDATA[Maddes]]></dc:creator><pubDate>Thu, 23 Nov 2006 08:17:25 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 09:25:37 GMT]]></title><description><![CDATA[<p>okay, noch was:</p>
<p>ich habe jetzt versucht, die Methode &quot;log&quot; zu ersetzen und den Operator &quot;&lt;&lt;&quot; zu überladen, also damit folgenes möglich ist:</p>
<pre><code>class Log 
{
   ...
}

Log log;

log &lt;&lt; &quot;bla bla&quot;;
</code></pre>
<p>aber ich bekomms nicht hin. Geht das überhaupt?</p>
<p>Grüße</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179766</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179766</guid><dc:creator><![CDATA[Maddes]]></dc:creator><pubDate>Thu, 23 Nov 2006 09:25:37 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 09:43:13 GMT]]></title><description><![CDATA[<p>Die einfachste Möglichkeit wäre es wohl, log von std::ostream abzuleiten, dann bekommst du den op&lt;&lt; gratis mitgeliefert für alles, was ausgegeben werden kann (allerdings kannst du nur schwer dazwischengreifen).</p>
<p>Alternativ wäre auch sowas vorstellbar:</p>
<pre><code class="language-cpp">class log
{
  static ofstream logfile;
  string name;
public:
  log(const string&amp;n) : name(n) {}
  template&lt;typename T&gt;
  log&amp; operator&lt;&lt;(const T&amp; val)
  {
    if(!logfile.isopen()) logfile.open(&quot;Log.txt&quot;);
    logfile&lt;&lt;name&lt;&lt;&quot;: &quot;&lt;&lt;val&lt;&lt;endl;
    return *this;
  }
};
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1179780</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179780</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 23 Nov 2006 09:43:13 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 10:11:59 GMT]]></title><description><![CDATA[<p>hey, danke!</p>
<p>Super Code, funktioniert auch, bis auf das static: (liegt sicher nicht an deinem Code sondern an mir <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":confused:"
      alt="😕"
    /> )</p>
<pre><code>#include &lt;iostream&gt;
#include &lt;string&gt;
#include &lt;fstream&gt;

ofstream log::logfile;

using namespace std;

class log
{
	static ofstream logfile;
	string name;

	public:
		log(const string&amp;n) : name(n) {}
	  	template&lt;typename T&gt;
	  	log&amp; operator&lt;&lt;(const T&amp; val)
	  	{
			if(!logfile.is_open()) logfile.open(&quot;Log.txt&quot;);
	    	logfile &lt;&lt; name &lt;&lt; &quot;: &quot; &lt;&lt; val &lt;&lt; endl;
	    	return *this;
	  	}
};

int main() {

	log log(&quot;test&quot;);
	log &lt;&lt; &quot;hallo&quot;;

}
</code></pre>
<blockquote>
<p>log.cpp:6: Fehler: »ofstream« bezeichnet keinen Typ</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1179812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179812</guid><dc:creator><![CDATA[Maddes]]></dc:creator><pubDate>Thu, 23 Nov 2006 10:11:59 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 10:15:36 GMT]]></title><description><![CDATA[<p>Das ist alles eine Frage der Reihenfolge - die Zeile 6 gehört HINTER deine Klassendefinition, dann klappt's auch mit dem Compiler.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179818</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179818</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 23 Nov 2006 10:15:36 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 10:30:55 GMT]]></title><description><![CDATA[<p>...........................</p>
<p>sag mir wann ich wieder aus der Ecke darf.... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
<p>1000 Dank! So hab ichs mir vorgestellt <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179838</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179838</guid><dc:creator><![CDATA[Maddes]]></dc:creator><pubDate>Thu, 23 Nov 2006 10:30:55 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 10:33:43 GMT]]></title><description><![CDATA[<p>Maddes schrieb:</p>
<blockquote>
<p>sag mir wann ich wieder aus der Ecke darf.... <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f644.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_rolling_eyes"
      title=":rolling_eyes:"
      alt="🙄"
    /></p>
</blockquote>
<p>Wenn du dich in die Ecke verkriechst, bringt das auch niemandem etwas. Schreib einfach 100 mal &quot;ich darf Namen erst verwenden, nachdem sie deklariert wurden&quot; <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f603.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--grinning_face_with_big_eyes"
      title=":D"
      alt="😃"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1179840</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1179840</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 23 Nov 2006 10:33:43 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Thu, 23 Nov 2006 15:40:53 GMT]]></title><description><![CDATA[<p>soa, ich glaub ich werd bekloppt.</p>
<p>also, lokaler Laptop - <strong>gcc-Version 4.1.2</strong> 20061027: Alles Super! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Server mit <strong>gcc version 3.3.5</strong> (Debian 1:3.3.5-13): Fehler! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_down"
      title=":-1:"
      alt="👎"
    /></p>
<blockquote>
<p>log.cpp: In function <code>int main()': log.cpp:30: error: parse error before</code>(' token<br />
log.cpp:31: error: invalid operands of types <code>&lt;unknown type&gt;' and</code>const<br />
char[6]' to binary `operator&lt;&lt;'</p>
</blockquote>
<p>Beides male der selbe Code !! <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1180118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180118</guid><dc:creator><![CDATA[Maddes]]></dc:creator><pubDate>Thu, 23 Nov 2006 15:40:53 GMT</pubDate></item><item><title><![CDATA[Reply to Klassenzugriff on Fri, 24 Nov 2006 10:39:12 GMT]]></title><description><![CDATA[<p>Die Klasse und die Instanz sollten unterschiedliche Namen haben (nicht beidesmal 'log').</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1180588</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1180588</guid><dc:creator><![CDATA[Th]]></dc:creator><pubDate>Fri, 24 Nov 2006 10:39:12 GMT</pubDate></item></channel></rss>