<?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[Opertatoren &amp;lt;&amp;lt; und &amp;gt;&amp;gt; überladen, damit man speichern kann]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich muss in einem Programm das Speichern und Laden integrieren. Die Vorgabe ist, dass es mit der Überladung von Operatoren funktionieren muss. Dabei soll das Speichern in der Datei mit dem fstream erfolgen, wobei hier nur noch das Objekt in das File geschrieben werden soll.</p>
<p>Nun ich habe jetzt schon viel im Internet gefunden, aber noch nichts das mir auch wirklich geholfen hätte.</p>
<p>Soweit ich das Konzept verstanden haben sollte das folgendermaßen funktionieren:</p>
<p>- In meinem header file habe ich den Operator mittels friend eingebaut (ostream)</p>
<pre><code class="language-cpp">friend std::ostream &amp;operator &lt;&lt; (std::ostream&amp;, const MyClass);
</code></pre>
<p>- Nötigen include Dateien wurden implementiert<br />
- In der cpp Datei implemntiere ich dann Nochmals den Operator so:</p>
<pre><code class="language-cpp">std::ostream &amp;operator &lt;&lt; (std::ostream &amp;os, const MyClass &amp;mc)
{
  mc.toStream(os);
  return os;
}
</code></pre>
<p>- Das toStream wird ebenfalls noch implementiert und enthält, jene Variablen die ich speichern möchte. (alle membervariablen sind private, da bekomme ich auch immer Fehlermeldungen)</p>
<p>- Dann hätte ich noch ein Objekt der Klass erstellt mit</p>
<pre><code class="language-cpp">MyKlasse *myclass = new MyKlasse();
</code></pre>
<p>und dieses Objekt mit dem Filestream in ein File geschrieben, aber das hat nicht funktioniert.</p>
<p>Kann mir jemand helfen? bzw. einen Link zu einem Tutorial zeigen, wo ich sehe und verstehen kann wie das ganze funktionieren soll bzw. was ich falsch gemacht habe.</p>
<p>lg user00009</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/214584/opertatoren-lt-lt-und-gt-gt-überladen-damit-man-speichern-kann</link><generator>RSS for Node</generator><lastBuildDate>Tue, 13 Oct 2026 11:38:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/214584.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 31 May 2008 10:16:49 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Opertatoren &amp;lt;&amp;lt; und &amp;gt;&amp;gt; überladen, damit man speichern kann on Sat, 31 May 2008 10:16:49 GMT]]></title><description><![CDATA[<p>Hallo!</p>
<p>Ich muss in einem Programm das Speichern und Laden integrieren. Die Vorgabe ist, dass es mit der Überladung von Operatoren funktionieren muss. Dabei soll das Speichern in der Datei mit dem fstream erfolgen, wobei hier nur noch das Objekt in das File geschrieben werden soll.</p>
<p>Nun ich habe jetzt schon viel im Internet gefunden, aber noch nichts das mir auch wirklich geholfen hätte.</p>
<p>Soweit ich das Konzept verstanden haben sollte das folgendermaßen funktionieren:</p>
<p>- In meinem header file habe ich den Operator mittels friend eingebaut (ostream)</p>
<pre><code class="language-cpp">friend std::ostream &amp;operator &lt;&lt; (std::ostream&amp;, const MyClass);
</code></pre>
<p>- Nötigen include Dateien wurden implementiert<br />
- In der cpp Datei implemntiere ich dann Nochmals den Operator so:</p>
<pre><code class="language-cpp">std::ostream &amp;operator &lt;&lt; (std::ostream &amp;os, const MyClass &amp;mc)
{
  mc.toStream(os);
  return os;
}
</code></pre>
<p>- Das toStream wird ebenfalls noch implementiert und enthält, jene Variablen die ich speichern möchte. (alle membervariablen sind private, da bekomme ich auch immer Fehlermeldungen)</p>
<p>- Dann hätte ich noch ein Objekt der Klass erstellt mit</p>
<pre><code class="language-cpp">MyKlasse *myclass = new MyKlasse();
</code></pre>
<p>und dieses Objekt mit dem Filestream in ein File geschrieben, aber das hat nicht funktioniert.</p>
<p>Kann mir jemand helfen? bzw. einen Link zu einem Tutorial zeigen, wo ich sehe und verstehen kann wie das ganze funktionieren soll bzw. was ich falsch gemacht habe.</p>
<p>lg user00009</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520087</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520087</guid><dc:creator><![CDATA[user00009]]></dc:creator><pubDate>Sat, 31 May 2008 10:16:49 GMT</pubDate></item><item><title><![CDATA[Reply to Opertatoren &amp;lt;&amp;lt; und &amp;gt;&amp;gt; überladen, damit man speichern kann on Sat, 31 May 2008 10:21:23 GMT]]></title><description><![CDATA[<p>Für mich sieht das soweit richtig aus. Das Einzige was ich mir vorstellen kann, was du evtl falsch gemacht hast, ist dass du vergessen haben könntest, die Klassen-Instanz zu dereferenzieren.</p>
<pre><code class="language-cpp">MyKlasse *myclass = new MyKlasse();
ofstream file( .. );
file &lt;&lt; myclass; // Schreibt den Zeiger rein
file &lt;&lt; *myclass; // Ruft deinen überladenen Operator auf.
</code></pre>
<p>Wenn's daran nicht liegt, musst du ein wenig spezifizieren, <em>was</em> denn nicht geht (Compilerfehler, Laufzeitfehler, ...) und ein bissl Quelltext zeigen.</p>
<p>PS: Wieso hast du die &quot;operator&lt;&lt;&quot;-Funktion eigentlich als &quot;friend&quot; markiert?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520089</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 31 May 2008 10:21:23 GMT</pubDate></item><item><title><![CDATA[Reply to Opertatoren &amp;lt;&amp;lt; und &amp;gt;&amp;gt; überladen, damit man speichern kann on Sat, 31 May 2008 12:06:11 GMT]]></title><description><![CDATA[<p>Das Problem ist das der Compiler immer einen Fehler schreibt, wenn ich<br />
bei toStream.</p>
<pre><code class="language-cpp">void MyKlasse::toStream(ostream &amp;os) const
{
	os &lt;&lt; member1;
	os &lt;&lt; member2;
}
</code></pre>
<p>member1 und member2 sind private integer Variablen. Beim Kompilieren bekomme ich dann immer eine Fehlermeldung, dass er auf private Variablen nicht zugreifen kann, obwohl diese in der selben Klasse sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520148</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520148</guid><dc:creator><![CDATA[user00009]]></dc:creator><pubDate>Sat, 31 May 2008 12:06:11 GMT</pubDate></item><item><title><![CDATA[Reply to Opertatoren &amp;lt;&amp;lt; und &amp;gt;&amp;gt; überladen, damit man speichern kann on Sat, 31 May 2008 12:22:24 GMT]]></title><description><![CDATA[<p>user00009 schrieb:</p>
<blockquote>
<p>...Beim Kompilieren bekomme ich dann immer eine Fehlermeldung, dass er auf private Variablen nicht zugreifen kann, obwohl diese in der selben Klasse sind.</p>
</blockquote>
<p>Das glaube ich nicht. <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="😉"
    /><br />
Hast Du vielleicht &quot;toStream()&quot; nicht public gemacht ?</p>
<p>BTW: Ich würde toStream() direkt ostream&amp; zurückliefern lassen.</p>
<pre><code class="language-cpp">ostream&amp; MyKlasse::toStream(ostream &amp;os) const { return os &lt;&lt; member &lt;&lt; member2; }

ostream &amp;operator&lt;&lt;(ostream &amp;os, const MyClass &amp;mc) { return mc.toStream(os); }
</code></pre>
<p>spart ein wenig Tipparbeit...</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520157</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520157</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Sat, 31 May 2008 12:22:24 GMT</pubDate></item><item><title><![CDATA[Reply to Opertatoren &amp;lt;&amp;lt; und &amp;gt;&amp;gt; überladen, damit man speichern kann on Sat, 31 May 2008 13:53:16 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>user00009 schrieb:</p>
<blockquote>
<p>...Beim Kompilieren bekomme ich dann immer eine Fehlermeldung, dass er auf private Variablen nicht zugreifen kann, obwohl diese in der selben Klasse sind.</p>
</blockquote>
<p>Das glaube ich nicht. <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="😉"
    /><br />
Hast Du vielleicht &quot;toStream()&quot; nicht public gemacht ?</p>
</blockquote>
<p>War ein anderer Zugriffsfehler. Das funkt jetzt</p>
<p>Dafür bekomme ich jetzt bei der toStream Methode folgenden Fehler:</p>
<p>1&gt;d:\MyClass.cpp(591) : error C2511: 'std::ostream &amp;MyClass_::toStream(std::ostream &amp;) const': Überladene Memberfunktion nicht in 'MyClass' gefunden.</p>
<p>Die ist aber in MyClass drinnen im cpp und im h file.</p>
<blockquote>
<p>BTW: Ich würde toStream() direkt ostream&amp; zurückliefern lassen.</p>
<pre><code class="language-cpp">ostream&amp; MyKlasse::toStream(ostream &amp;os) const { return os &lt;&lt; member &lt;&lt; member2; }
</code></pre>
</blockquote>
<p>An was kanns liegen?</p>
<p>lg user00009</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520213</guid><dc:creator><![CDATA[user00009]]></dc:creator><pubDate>Sat, 31 May 2008 13:53:16 GMT</pubDate></item><item><title><![CDATA[Reply to Opertatoren &amp;lt;&amp;lt; und &amp;gt;&amp;gt; überladen, damit man speichern kann on Sat, 31 May 2008 14:19:06 GMT]]></title><description><![CDATA[<p>Hast du die Funktion in der cpp-Datei als const deklariert und in der Header-Datei nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520214</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sat, 31 May 2008 14:19:06 GMT</pubDate></item><item><title><![CDATA[Reply to Opertatoren &amp;lt;&amp;lt; und &amp;gt;&amp;gt; überladen, damit man speichern kann on Sat, 31 May 2008 14:34:56 GMT]]></title><description><![CDATA[<p>Im Header-File übergibst du eine Instanz, in der Implementierung aber eine Referenz von MyClass.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1520222</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1520222</guid><dc:creator><![CDATA[plaintext]]></dc:creator><pubDate>Sat, 31 May 2008 14:34:56 GMT</pubDate></item></channel></rss>