<?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[eigene Klasse von ostrstream ableiten  [gelöst]]]></title><description><![CDATA[<p>Hallo,<br />
beim Ableiten einer eigenen Klasse von ostrstream stoße ich auf zwei Probleme.<br />
1. Unter VC2008 erzeugt mein Manipulator beim zweiten Aufruf in einer Folge nur eine Ausgabe seiner Adresse.<br />
2. Unter gcc bricht die Compilation ab mit einem Error: &quot;my was not declared in this scope&quot; my ist mein Manipulator.</p>
<pre><code>#include &lt;strstream&gt; 
#include &lt;iostream&gt;

using namespace std;

class myStream	:	public ostrstream
{ 
public: 
	myStream() : ostrstream()			{} 
	friend myStream&amp; my(myStream&amp; ml)	{	ml &lt;&lt; &quot;&lt;myStream&gt;&quot;;	return ml;	} 
}; 

// manipulator function 
inline myStream&amp; operator&lt;&lt;(myStream&amp; ml, myStream&amp; (*function)(myStream&amp;) ) 
{	return (*function)(ml);	} 

int main() 
{
	myStream MyStream; 

	my(MyStream);
	MyStream &lt;&lt; my;					//	!!! hier der Fehler in gcc. my was not declared in this scope
	MyStream &lt;&lt; my &lt;&lt; my &lt;&lt; &quot;hallo1&quot;;
	MyStream &lt;&lt; &quot;hallo2&quot; &lt;&lt; my;		//	!!! hier der Fehler in VC2008. Für my wird die Adresse ausgegeben
	MyStream &lt;&lt; ends;

	cout &lt;&lt; MyStream.str();
}
</code></pre>
<p>bin für jeden Tip dankbar.<br />
tschüß<br />
Troll.Soft</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267266/eigene-klasse-von-ostrstream-ableiten-gelöst</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 14:26:19 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267266.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 21 May 2010 09:43:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 12:09:21 GMT]]></title><description><![CDATA[<p>Hallo,<br />
beim Ableiten einer eigenen Klasse von ostrstream stoße ich auf zwei Probleme.<br />
1. Unter VC2008 erzeugt mein Manipulator beim zweiten Aufruf in einer Folge nur eine Ausgabe seiner Adresse.<br />
2. Unter gcc bricht die Compilation ab mit einem Error: &quot;my was not declared in this scope&quot; my ist mein Manipulator.</p>
<pre><code>#include &lt;strstream&gt; 
#include &lt;iostream&gt;

using namespace std;

class myStream	:	public ostrstream
{ 
public: 
	myStream() : ostrstream()			{} 
	friend myStream&amp; my(myStream&amp; ml)	{	ml &lt;&lt; &quot;&lt;myStream&gt;&quot;;	return ml;	} 
}; 

// manipulator function 
inline myStream&amp; operator&lt;&lt;(myStream&amp; ml, myStream&amp; (*function)(myStream&amp;) ) 
{	return (*function)(ml);	} 

int main() 
{
	myStream MyStream; 

	my(MyStream);
	MyStream &lt;&lt; my;					//	!!! hier der Fehler in gcc. my was not declared in this scope
	MyStream &lt;&lt; my &lt;&lt; my &lt;&lt; &quot;hallo1&quot;;
	MyStream &lt;&lt; &quot;hallo2&quot; &lt;&lt; my;		//	!!! hier der Fehler in VC2008. Für my wird die Adresse ausgegeben
	MyStream &lt;&lt; ends;

	cout &lt;&lt; MyStream.str();
}
</code></pre>
<p>bin für jeden Tip dankbar.<br />
tschüß<br />
Troll.Soft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900627</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900627</guid><dc:creator><![CDATA[Troll.Soft]]></dc:creator><pubDate>Fri, 21 May 2010 12:09:21 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 09:46:47 GMT]]></title><description><![CDATA[<p>Zeiger auf Member-Funktionen sind ne böse Sache. Am besten definierst du deine Funktion nicht als Teil der Klasse, sondern als globale Funktion. Genauso wie auch endl().</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900631</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900631</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Fri, 21 May 2010 09:46:47 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 09:54:55 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">class myStream;
myStream&amp; my(myStream&amp;);
</code></pre>
<p>vor die Klassendefinition von myStream, und gut ist.<br />
Dann kompiliert es auch unter Linux, führt dann aber in Zeile 26 nicht die Funktion aus - warum?</p>
<pre><code class="language-cpp">ostream&amp; operator&lt;&lt;(ostream&amp; stream, const char*);
</code></pre>
<p>existiert und gibt keinen myStream zurück. Deshalb kommt der nächste &quot;&lt;&lt; my&quot; nicht in ein myStream sondern ein stinknormales ostream. Und dafür existiert deine Operatorüberladung nicht.<br />
Warum denn eigentlich ableiten? Ist hier (bisher) absolut unnötig. Was hast du noch alles vor?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900639</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900639</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Fri, 21 May 2010 09:54:55 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 10:13:30 GMT]]></title><description><![CDATA[<p>habe ich gemacht.<br />
Ergebnis: Alles compiliert auch unter gcc, allerdings wird immer noch die Adresse der Funktion ausgegeben.</p>
<pre><code>#include &lt;strstream&gt; 
#include &lt;iostream&gt;

using namespace std;

class myStream	:	public ostrstream
{ 
public: 
	myStream() : ostrstream()			{} 
}; 

inline myStream&amp; my(myStream&amp; ml) 
{	ml &lt;&lt; &quot;&lt;myStream&gt;&quot;;	return ml;	} 

// manipulator function 
inline myStream&amp; operator&lt;&lt;(myStream&amp; ml, myStream&amp; (*function)(myStream&amp;) ) 
{	return (*function)(ml);	} 

int main() 
{
	myStream MyStream; 

	my(MyStream);
	MyStream &lt;&lt; my;					
	MyStream &lt;&lt; my &lt;&lt; my &lt;&lt; &quot; hallo1 &quot;;
	MyStream &lt;&lt; &quot; hallo2 &quot; &lt;&lt; my &lt;&lt; &quot; Ende &quot;;		//	!!! hier der Fehler. Für my wird die Adresse ausgegeben
	MyStream &lt;&lt; ends;

	cout &lt;&lt; MyStream.str();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1900648</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900648</guid><dc:creator><![CDATA[Troll.Soft]]></dc:creator><pubDate>Fri, 21 May 2010 10:13:30 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 10:16:51 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<pre><code class="language-cpp">class myStream;
myStream&amp; my(myStream&amp;);
</code></pre>
<p>vor die Klassendefinition von myStream, und gut ist.<br />
Dann kompiliert es auch unter Linux, führt dann aber in Zeile 26 nicht die Funktion aus - warum?</p>
<pre><code class="language-cpp">ostream&amp; operator&lt;&lt;(ostream&amp; stream, const char*);
</code></pre>
<p>existiert und gibt keinen myStream zurück. Deshalb kommt der nächste &quot;&lt;&lt; my&quot; nicht in ein myStream sondern ein stinknormales ostream. Und dafür existiert deine Operatorüberladung nicht.<br />
Warum denn eigentlich ableiten? Ist hier (bisher) absolut unnötig. Was hast du noch alles vor?</p>
</blockquote>
<p>Werde ich auch noch machen.<br />
Warum ableiten? Weil die Klasse noch ein wenig mehr kann, als im eingedampften Code zu sehen ist. Es werden eigene Variable gehalten und noch weitere Klassen abgeleitet. 90% funktioniert auch schon.</p>
<p>tschüß<br />
Troll.Soft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900652</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900652</guid><dc:creator><![CDATA[Troll.Soft]]></dc:creator><pubDate>Fri, 21 May 2010 10:16:51 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 10:16:53 GMT]]></title><description><![CDATA[<p>Troll.Soft schrieb:</p>
<blockquote>
<p>habe ich gemacht.<br />
Ergebnis: Alles compiliert auch unter gcc, allerdings wird immer noch die Adresse der Funktion ausgegeben.</p>
</blockquote>
<p>Und auch dazu hab ich was geschrieben...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900653</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900653</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Fri, 21 May 2010 10:16:53 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 10:37:27 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<p>Troll.Soft schrieb:</p>
<blockquote>
<p>habe ich gemacht.<br />
Ergebnis: Alles compiliert auch unter gcc, allerdings wird immer noch die Adresse der Funktion ausgegeben.</p>
</blockquote>
<p>Und auch dazu hab ich was geschrieben...</p>
</blockquote>
<p>Und das habe ich nun auch eingearbeitet.<br />
Ergebnis: Der Code läuft unter VC2008 und gcc so wie es gedacht ist.</p>
<p>Vielen Dank für die schnelle Hilfe.<br />
Jetzt muß ich mich um den original-code kümmern.</p>
<p>tschüß Troll.Soft</p>
<p>P.S.: kann ich hier irgendwo den Status gelöst setzen?</p>
<pre><code>#include &lt;strstream&gt; 
#include &lt;iostream&gt;

using namespace std;

class myStream; 
myStream&amp; my(myStream&amp;);

class myStream	:	public ostrstream
{ 
public: 
	myStream() : ostrstream()			{} 
	friend myStream&amp; my(myStream&amp; ml)	{	ml &lt;&lt; &quot;&lt;myStream&gt;&quot;;	return ml;	} 
}; 

myStream&amp; operator&lt;&lt;(myStream&amp; stream, const char* S)	{	(ostrstream&amp;)stream &lt;&lt; S;	return stream;	} 

// manipulator function 
inline myStream&amp; operator&lt;&lt;(myStream&amp; ml, myStream&amp; (*function)(myStream&amp;) ) 
{	return (*function)(ml);	} 

int main() 
{
	myStream MyStream; 

	my(MyStream);
	MyStream &lt;&lt; my;				
	MyStream &lt;&lt; my &lt;&lt; my &lt;&lt; &quot; hallo1 &quot;;
	MyStream &lt;&lt; &quot; hallo2 &quot; &lt;&lt; my &lt;&lt; &quot; hallo &quot; &lt;&lt; my &lt;&lt; &quot; hallo &quot; &lt;&lt; my;	
	MyStream &lt;&lt; ends;

	cout &lt;&lt; MyStream.str();
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1900665</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900665</guid><dc:creator><![CDATA[Troll.Soft]]></dc:creator><pubDate>Fri, 21 May 2010 10:37:27 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 11:09:22 GMT]]></title><description><![CDATA[<p>Janjan schrieb:</p>
<blockquote>
<p>Zeiger auf Member-Funktionen sind ne böse Sache.</p>
</blockquote>
<p>Wieso <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1900687</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900687</guid><dc:creator><![CDATA[[[global:guest]]]]></dc:creator><pubDate>Fri, 21 May 2010 11:09:22 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 11:11:08 GMT]]></title><description><![CDATA[<p>Dweb schrieb:</p>
<blockquote>
<p>Janjan schrieb:</p>
<blockquote>
<p>Zeiger auf Member-Funktionen sind ne böse Sache.</p>
</blockquote>
<p>Wieso <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>
</blockquote>
<p>Missverständlich formuliert. Nicht böse im Sinne von &quot;nicht nutzen!&quot;, sondern böse im Sinne von ärgerlich zu nutzen. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1900689</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900689</guid><dc:creator><![CDATA[Janjan]]></dc:creator><pubDate>Fri, 21 May 2010 11:11:08 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 11:43:04 GMT]]></title><description><![CDATA[<p>Troll.Soft schrieb:</p>
<blockquote>
<p>P.S.: kann ich hier irgendwo den Status gelöst setzen?</p>
</blockquote>
<p>Ja. Dein erstes Posting editieren und dem Titel ein [gelöst] hinzufügen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900710</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900710</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Fri, 21 May 2010 11:43:04 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 11:57:01 GMT]]></title><description><![CDATA[<p>Troll.Soft schrieb:</p>
<blockquote>
<p>Und das habe ich nun auch eingearbeitet.<br />
Ergebnis: Der Code läuft unter VC2008 und gcc so wie es gedacht ist.</p>
</blockquote>
<p>Und dir ist auch klar, dass das nur solange gut geht, wie du nicht auch plötzlich andere Typen ausgeben willst. int, std::string, eigene Klassen, die nur die Überladung für den ostream&amp; anbieten...<br />
Deshalb nochmal die Frage: Warum denkst du musst du von ostrstream ableiten?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900715</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900715</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Fri, 21 May 2010 11:57:01 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 12:21:57 GMT]]></title><description><![CDATA[<p>l'abra d'or schrieb:</p>
<blockquote>
<p>Und dir ist auch klar, dass das nur solange gut geht, wie du nicht auch plötzlich andere Typen ausgeben willst. int, std::string, eigene Klassen, die nur die Überladung für den ostream&amp; anbieten...<br />
Deshalb nochmal die Frage: Warum denkst du musst du von ostrstream ableiten?</p>
</blockquote>
<p>Einige Probleme sind mir schon klar, andere vermutlich noch nicht <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="🙂"
    /> Diese anderen werden sich noch rechtzeitig durch Abstürze etc bemerkbar machen.</p>
<p>Von ostrstream ableiten erscheint mir der natürliche Weg. Falls das sich als Fehlschlag erweist habe ich keine Hemmungen eine eigene Klasse ohne abzuleiten zu erstellen.</p>
<p>Einzig wichtig ist: Es läuft mit allen Compilern und der Stream spuckt aus, was er soll.</p>
<p>tschüß<br />
Troll.Soft</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900726</guid><dc:creator><![CDATA[Troll.Soft]]></dc:creator><pubDate>Fri, 21 May 2010 12:21:57 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 20:31:37 GMT]]></title><description><![CDATA[<p>Kleine Anmerkung:<br />
<code>ostrstream</code> ist deprecated, somit veraltet und sollte nicht mehr verwendet werden.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900932</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900932</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Fri, 21 May 2010 20:31:37 GMT</pubDate></item><item><title><![CDATA[Reply to eigene Klasse von ostrstream ableiten  [gelöst] on Fri, 21 May 2010 21:23:52 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p>Kleine Anmerkung:<br />
<code>ostrstream</code> ist deprecated, somit veraltet und sollte nicht mehr verwendet werden.</p>
<p>Grüssli</p>
</blockquote>
<p>wird berücksichtigt</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1900951</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1900951</guid><dc:creator><![CDATA[Troll.Soft]]></dc:creator><pubDate>Fri, 21 May 2010 21:23:52 GMT</pubDate></item></channel></rss>