<?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[uint8_t und cout]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Klasse, welche member vom Type uint8_t besitzt. Dies sind letztlich typedefs auf char. Wenn ich nun diese Member ausgebe per cout, kommen nur chars raus. Wie kann ich cout dazubringen die member als Zahl auszugeben, ohne immer casten zu müssen?</p>
<p>Danke<br />
Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/238009/uint8_t-und-cout</link><generator>RSS for Node</generator><lastBuildDate>Wed, 23 Sep 2026 05:01:30 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/238009.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 05 Apr 2009 08:59:56 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 08:59:56 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe eine Klasse, welche member vom Type uint8_t besitzt. Dies sind letztlich typedefs auf char. Wenn ich nun diese Member ausgebe per cout, kommen nur chars raus. Wie kann ich cout dazubringen die member als Zahl auszugeben, ohne immer casten zu müssen?</p>
<p>Danke<br />
Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691112</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691112</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 08:59:56 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 09:41:35 GMT]]></title><description><![CDATA[<p>gar nicht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691126</guid><dc:creator><![CDATA[volkard]]></dc:creator><pubDate>Sun, 05 Apr 2009 09:41:35 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 09:45:59 GMT]]></title><description><![CDATA[<p>Du könntest den globalen operator &lt;&lt; überladen für dein typedef. Schlussendlich wird aber auch dort gecastet und du musst auf den Typ achten in den du castest, da in der Regel nur char 1 Byte gross ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691128</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691128</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 05 Apr 2009 09:45:59 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 10:05:52 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>schade, aber ok. Dann wollte ich es mit überladen von &lt;&lt; ersetzen. Dazu habe ich in der ASTTerm.h Datei definiert:</p>
<pre><code class="language-cpp">#include &lt;ostream&gt;

using std::ostream;

namespace ast{
class ASTTerm{
friend ostream&amp; operator&lt;&lt; (ostream&amp; s, const ASTTerm&amp; t);
[..]
}//End class
}//End namespace
</code></pre>
<p>und versuche in der ASTTerm.cpp die Ausgabe über:<br />
[/cpp]<br />
ostream&amp; operator&lt;&lt;(ostream&amp; s, const ASTTerm&amp; t){</p>
<p>switch(t.type){<br />
case DSM_TERM_UNARY:<br />
return s &lt;&lt; &quot;DSM_TERM_UNARY &quot; &lt;&lt; (int)t.varid;<br />
}//End switch<br />
[/cpp]</p>
<p>Ich erhalte aber als Fehler:</p>
<pre><code>source/ast/astterm.h:137: Fehler: »TermType ast::ASTTerm::type« ist privat
source/ast/astterm.cpp:244: Fehler: in diesem Zusammenhang
source/ast/astterm.h:141: Fehler: »uint8_t ast::ASTTerm::varid« ist privat
source/ast/astterm.cpp:246: Fehler: in diesem Zusammenhang
</code></pre>
<p>aber das soll doch friend gerade erlauben, denk ich?</p>
<p>uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691130</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 10:05:52 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 09:54:41 GMT]]></title><description><![CDATA[<p>friend macht ausserhalb einer Klasse gar keinen Sinn.. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1691132</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691132</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 05 Apr 2009 09:54:41 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 10:08:41 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>dies war ein unvollständiges Zitat, meinerseits. Ich habe es oben ergänzt. Die Probleme bestehen aber wie dokumentiert.</p>
<p>(Die Vorgehensweise habe ich von hier: <a href="http://www.willemer.de/informatik/cpp/cppovrld.htm" rel="nofollow">hier</a>)</p>
<p>Danke für den Hinweis</p>
<p>Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691140</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691140</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 10:08:41 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 10:45:39 GMT]]></title><description><![CDATA[<p>Hallo nochmal,</p>
<p>ich habe die Funktion nun so abgeändert:</p>
<pre><code class="language-cpp">ostream &amp; operator&lt;&lt;(ostream&amp; s, const ASTTerm&amp; t) {

    switch (t.getType()) {
        case DSM_TERM_UNARY:
            return s &lt;&lt; &quot;DSM_TERM_UNARY &quot;
                    &lt;&lt; (int) t.getVariableNumber();
        [...]
    }//End switch
}//End operator&lt;&lt;
</code></pre>
<p>Wenn ich in main folgendes proibiere:</p>
<pre><code class="language-cpp">ASTTerm term1;
cout &lt;&lt; term1 &lt;&lt; endl;
</code></pre>
<p>Erhalte ich als Compilerfehler:</p>
<pre><code>source/qep-creation.cpp:113: undefined reference to `ast::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, ast::ASTTerm const&amp;)'
</code></pre>
<p>Ich raffe es nicht.<br />
Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691153</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691153</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 10:45:39 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 11:24:19 GMT]]></title><description><![CDATA[<p>Definier die Überladung global. Dann sollte das klappen..</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691178</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sun, 05 Apr 2009 11:24:19 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 11:38:59 GMT]]></title><description><![CDATA[<p>Hallo drakon,</p>
<p>also wenn ich ne Methode als friend deklariere, dann ist sie doch automatisch quasi global, oder? Aber selbst wenn ich die Dekleration aus der Klasse rausziehe ändert sich nichts. Was mich wundert ist, trotz friend kann ich in der Methodenimplementierung nicht auf private Elemente des Terms zugreifen. Das heißt doch, dass meine Dekleration/Implementierung irgendwie falsch ist?! Hier nochmal die beiden Dateiauszüge:<br />
ASTTerm.h</p>
<pre><code class="language-cpp">#ifndef _ASTTERM_H
#define	_ASTTERM_H

#include &quot;../DSMQL.h&quot;
#include &lt;stdlib.h&gt;
#include &lt;stdint.h&gt;
#include &lt;ostream&gt;

using std::ostream;

namespace ast{

class ASTTerm {
public:

    ASTTerm();
    ASTTerm(uint8_t vn);
    ~ASTTerm();
    virtual TermType getType() const;
    void setType(TermType t);
    [...]
    friend ostream&amp; operator&lt;&lt;(ostream&amp;, const ASTTerm&amp;);
    [...]
};
}//End namespace
#endif	/* _ASTTERM_H */
</code></pre>
<p>Und die Implementierung in ASTTerm.cpp:</p>
<pre><code class="language-cpp">#include &quot;astterm.h&quot;

using namespace ast;
[...]
ostream&amp; operator&lt;&lt;(ostream&amp; s, const ASTTerm&amp; t) {

    return s &lt;&lt; t.getType; //geht
//  return s &lt;&lt; t.type //geht nicht, trotz friend
}//End operator&lt;&lt;
</code></pre>
<p>Aufrufen verusche ich es per:</p>
<pre><code class="language-cpp">#include &lt;stdlib.h&gt;
#include &lt;iostream&gt;
#include &quot;ast/astterm.h&quot;

using ast::ASTTerm;

int main(int argc, char** argv) {
ASTTerm term1;
std::cout &lt;&lt; term1;
return(0};
}//End main
</code></pre>
<p>Was folgenden Fehler gibt:</p>
<pre><code>source/qep-creation.cpp:113: undefined reference to `ast::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, ast::ASTTerm const&amp;)'
</code></pre>
<p>Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691185</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691185</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 11:38:59 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 11:43:14 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">ostream&amp; operator&lt;&lt;(ostream&amp; s, const ASTTerm&amp; t)
</code></pre>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/27a1.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--right_arrow"
      title=":arrow_right:"
      alt="➡"
    /></p>
<pre><code class="language-cpp">ostream&amp; ASTTerm::operator&lt;&lt;(ostream&amp; s, const ASTTerm&amp; t)
</code></pre>
<p>uwerothfeld schrieb:</p>
<blockquote>
<p>return s &lt;&lt; t.type //geht nicht, trotz friend</p>
</blockquote>
<p>Die als &quot;friend&quot; deklarierte Operator-Funktion ist quasi &quot;static&quot;, deshalb gibt's da kein &quot;this&quot; und kein implizites Zugreifen auf Member-Variablen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691186</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691186</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 05 Apr 2009 11:43:14 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 11:57:14 GMT]]></title><description><![CDATA[<p>Hallo Badestrand,</p>
<p>also ich glaube da irrst du, denn laut <a href="http://www.willemer.de/informatik/cpp/cppovrld.htm" rel="nofollow">hier</a> ist ein Ausgabeoperator &quot;&lt;&lt;&quot; nie eine Memberfunktion. Daher kann ASTTerm:operator&lt;&lt; auch nicht gehen und führt zu:</p>
<pre><code>source/ast/astterm.cpp:246: Fehler: »std::ostream&amp; ast::ASTTerm::operator&lt;&lt;(std::ostream&amp;, const ast::ASTTerm&amp;)« muss genau ein Argument nehmen
</code></pre>
<p>außerdem ist this != friend. Ich will ja nicht this-&gt;type machen, sondern t.type, was laut obigen Link gehen sollte. <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>
<p>Es kann doch nicht so schwer sein, dass zum laufen zu bringen. Ich bin gefrustet.</p>
<p>Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691195</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691195</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 11:57:14 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 12:05:26 GMT]]></title><description><![CDATA[<p>uwerothfeld schrieb:</p>
<blockquote>
<p>also ich glaube da irrst du, denn laut <a href="http://www.willemer.de/informatik/cpp/cppovrld.htm" rel="nofollow">hier</a> ist ein Ausgabeoperator &quot;&lt;&lt;&quot; nie eine Memberfunktion. Daher kann ASTTerm:operator&lt;&lt; auch nicht gehen</p>
</blockquote>
<p>Höh? Klar, du deklarierst das Ding ja auch in der Klasse &quot;ASTTerm&quot;. Dann musst du logischerweise auch ein &quot;ASTTerm::&quot; bei der Definition davorhängen. Mach das und alles funktioniert so, wie du es willst <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>edit: Also so:</p>
<pre><code class="language-cpp">// cpp-Datei:
class ASTTerm {
    [...]
    friend ostream&amp; operator&lt;&lt;( ostream&amp;, const ASTTerm&amp; );
    [...]
};

// Header-Datei:
ostream&amp; ASTTerm::operator&lt;&lt;(ostream&amp; s, const ASTTerm&amp; t)
{
    return s &lt;&lt; t.type //geht, wegen friend
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1691203</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691203</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 05 Apr 2009 12:05:26 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 12:17:41 GMT]]></title><description><![CDATA[<p>Hallo Badestrand,</p>
<p>ne leider eben nicht, da dann der Compiler dies sagt:</p>
<pre><code class="language-cpp">source/ast/astterm.cpp:254: Fehler: »std::ostream&amp; ast::ASTTerm::operator&lt;&lt;(std::ostream&amp;, const ast::ASTTerm&amp;)« muss genau ein Argument nehmen
</code></pre>
<p>Ich weeß nicht mehr weiter <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="😞"
    /><br />
Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691207</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691207</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 12:17:41 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 12:23:41 GMT]]></title><description><![CDATA[<p>Hab's eben mal ausprobiert, da hatte ich das völlig falsch in Erinnerung <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="😕"
    /> Das &quot;ASTTerm::&quot; ist anscheinend wirklich falsch, hier mein funktionierender Testcode:</p>
<pre><code class="language-cpp">#include &lt;iostream&gt;

namespace ast
{
	class ASTTerm
	{
		public:
			friend std::ostream&amp; operator&lt;&lt;( std::ostream&amp; o, const ASTTerm&amp; );

		private:
			int i;
	};

	std::ostream&amp; operator&lt;&lt;( std::ostream&amp; o, const ASTTerm&amp; me )
	{
		return o &lt;&lt; me.i;
	}
}
</code></pre>
<p>Welchen Compiler nutzt du denn? (Btw: &quot;using namespace&quot; in Headern ist zurecht verpönt.)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691213</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691213</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 05 Apr 2009 12:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 12:23:42 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>,<br />
Du meinst wohl so:</p>
<pre><code class="language-cpp">// Header-Datei: // &lt;--
class ASTTerm { 
    [...] 
    friend ostream&amp; operator&lt;&lt;( ostream&amp;, const ASTTerm&amp; ); 
    [...] 
}; 

// cpp-Datei: // &lt;--
ostream&amp; operator&lt;&lt;(ostream&amp; s, const ASTTerm&amp; t) // &lt;--
{ 
    return s &lt;&lt; t.type //geht, wegen friend 
}
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691214</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691214</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 05 Apr 2009 12:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 12:26:27 GMT]]></title><description><![CDATA[<p>Dravere schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>,<br />
Du meinst wohl so: [...]</p>
</blockquote>
<p>Leider zwei Sekunden zu spät :p (Außer für das Verwechseln von cpp- und Header-Datei, ohje ohje)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691217</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691217</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 05 Apr 2009 12:26:27 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 12:31:50 GMT]]></title><description><![CDATA[<p>Badestrand schrieb:</p>
<blockquote>
<p>Dravere schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13210">@Badestrand</a>,<br />
Du meinst wohl so: [...]</p>
</blockquote>
<p>Leider zwei Sekunden zu spät :p (Außer für das Verwechseln von cpp- und Header-Datei, ohje ohje)</p>
</blockquote>
<p>Da scheint gewisses Wissen langsam einzurosten <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="🙂"
    /><br />
Vielleicht noch als Ergänzung:<br />
<a href="http://www.cplusplus.com/doc/tutorial/inheritance.html" rel="nofollow">http://www.cplusplus.com/doc/tutorial/inheritance.html</a><br />
<a href="http://tutorial.schornboeck.net/operatoren_ueberladung2.htm" rel="nofollow">http://tutorial.schornboeck.net/operatoren_ueberladung2.htm</a></p>
<p>Grüssli <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/1691221</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691221</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 05 Apr 2009 12:31:50 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 12:46:44 GMT]]></title><description><![CDATA[<p>Hallo Badestrand und Dravere,</p>
<p>also ich nutze NetBeans 6.5.1. Dort ist als C++ Compiler /usr/lib/ccache/gcc, definiert, was ein:</p>
<pre><code>g++ (GCC) 4.3.2 20081105 (Red Hat 4.3.2-7)
Copyright (C) 2008 Free Software Foundation, Inc.
Dies ist freie Software; die Kopierbedingungen stehen in den Quellen. Es
gibt KEINE Garantie; auch nicht für MARKTGÄNGIGKEIT oder FÜR SPEZIELLE ZWECKE.
</code></pre>
<p>ist. Das ganze auf einem Fedora 10. Ich habe alles rüberkopiert, wie du es angegeben hast, aber das Problem bleibt. Gleiche Fehlermeldung und immernoch fehlender Zugriff auf die Member. Komisches Ding.</p>
<p>Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691227</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691227</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 12:46:44 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 12:55:36 GMT]]></title><description><![CDATA[<p>1. Zeig es mal an einem kleinen und funktionierenden Beispielquellcode, was du machst.<br />
2. Hast du die Tutoriallinks durchgelesen?</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691233</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691233</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 05 Apr 2009 12:55:36 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 13:13:51 GMT]]></title><description><![CDATA[<p>Hallo ihr beide,</p>
<p>gute Idee, mit dem Minibsp. Warum kann man hier nix anhängen?? Mh. Egal.</p>
<p>Datei ASTTerm.h:</p>
<pre><code class="language-cpp">/**
 * File:   astterm.h
 */
#ifndef _ASTTERM_H
#define	_ASTTERM_H

#include &lt;stdlib.h&gt;
#include &lt;stdint.h&gt;
#include &lt;ostream&gt;

namespace ast{

class ASTTerm {
public:
    ASTTerm(int vn);
    friend std::ostream&amp; operator&lt;&lt;( std::ostream&amp; s, const ASTTerm&amp; t);
    int getI() const;
private:
    int i;
};
}//End namespace
#endif	/* _ASTTERM_H */
</code></pre>
<p>Datei ASTTerm.cpp:</p>
<pre><code class="language-cpp">/*
 * File:   astterm.cpp
 */
#include &quot;ASTTerm.h&quot;

using namespace ast;

ASTTerm::ASTTerm(int vn) {
    this-&gt;i = vn;
}//End ASTTerm

int ASTTerm::getI() const {
    return this-&gt;i;
}//End getI

std::ostream&amp; operator&lt;&lt;( std::ostream&amp; s, const ASTTerm&amp; t) {

    //return s &lt;&lt; t.i; //geht nicht trotz friend
    return s &lt;&lt; t.getI(); //geht

}//End operator&lt;&lt;
</code></pre>
<p>Die main:</p>
<pre><code class="language-cpp">/* 
 * File:   main.cpp
 */

#include &lt;stdlib.h&gt;
#include &lt;iostream&gt;
#include &quot;ast/ASTTerm.h&quot;

int main(int argc, char** argv) {

    ast::ASTTerm term(1);
    std::cout&lt;&lt;term &lt;&lt;std::endl;  //geht nicht
    //Fehler von Compiler
    ///source/main.cpp:20: undefined reference to `ast::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, ast::ASTTerm const&amp;)'

    return (EXIT_SUCCESS);
}
</code></pre>
<p>Die Fehlermeldung vom Compiler ist ja bekannt. <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="🙂"
    /> Die Tutorials habe ich durchgelesen. Ich habe auch die verschiedenen Stellungen von const in der Signatur getestet, alles das gleiche ....</p>
<p>Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691245</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691245</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 13:13:51 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 13:28:27 GMT]]></title><description><![CDATA[<p>Hast du auch das Objectfile, welches aus <code>astterm.cpp</code> erzeugt wird, bei der Kompilierung von <code>main.cpp</code> dazugefügt?</p>
<p>Im übrigen sind die folgenden 2 Header keine Standard C++ Header:<br />
`#include &lt;stdlib.h&gt;</p>
<p>#include &lt;stdint.h&gt;`</p>
<p>Das sind C Header. Für <code>&lt;stdlib.h&gt;</code> gibt es in C++ den <code>&lt;cstdlib&gt;</code> , wo dann auch alle Funktionen in Namensraum <code>std</code> sind. Für <code>&lt;stdint.h&gt;</code> gibt es in C++ keinen entsprechenden Header, da dieser erst in C99 dazukam. Man sollte im allgemeinen eher auf C++ Funktionen in C++ zurückgreifen. Die C Funktionen wurden nunmal nicht für C++ geschaffen.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691255</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691255</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 05 Apr 2009 13:28:27 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 13:42:46 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>Dravere schrieb:</p>
<blockquote>
<p>Hast du auch das Objectfile, welches aus <code>astterm.cpp</code> erzeugt wird, bei der Kompilierung von <code>main.cpp</code> dazugefügt?</p>
</blockquote>
<p>Gute Frage. Hab in NetBeans einfach Compile gedrückt. Mh. Ich gehe eingentlich mal davon aus, dass dies das Makefile berücksichtigt. Wenn ich es über Kommandozeile compiliere, ergibt sich:</p>
<pre><code>gcc ast/ASTTerm.cpp main.cpp -o out.a
/tmp/cc2yuDFt.o: In function `operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, ast::ASTTerm const&amp;)':
ASTTerm.cpp:(.text+0x42): undefined reference to `std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator&lt;&lt;(int)'
/tmp/cc2yuDFt.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
/tmp/ccWDxdeD.o: In function `__static_initialization_and_destruction_0(int, int)':
main.cpp:(.text+0x1d): undefined reference to `std::ios_base::Init::Init()'
main.cpp:(.text+0x22): undefined reference to `std::ios_base::Init::~Init()'
/tmp/ccWDxdeD.o: In function `main':
main.cpp:(.text+0x8a): undefined reference to `std::cout'
main.cpp:(.text+0x8f): undefined reference to `ast::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, ast::ASTTerm const&amp;)'
main.cpp:(.text+0x97): undefined reference to `std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; std::endl&lt;char, std::char_traits&lt;char&gt; &gt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;)'
main.cpp:(.text+0x9f): undefined reference to `std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp; (*)(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;))'
/tmp/ccWDxdeD.o:(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld gab 1 als Ende-Status zurück
</code></pre>
<p>Was doch in etwa das gleiche ist. Oder?</p>
<p>Bezüglich der Header danke für den Tipp. Also stdint.h benötige ich nur für uint8_t, unint16_t, ... Typen innerhalb meines Projektes (Vorgabe <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="😞"
    /> ). DAs mit stdlib werde ich gleich ändern.</p>
<p>Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691261</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 13:42:46 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 13:48:57 GMT]]></title><description><![CDATA[<p>Hatte ich vorhin gar nicht gesehen: Du musst die Definition von <code>std::ostream&amp; operator&lt;&lt;( std::ostream&amp; s, const ASTTerm&amp; t)</code> auch innerhalb <code>namespace ast { .. }</code> einpacken <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/1691263</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691263</guid><dc:creator><![CDATA[Badestrand]]></dc:creator><pubDate>Sun, 05 Apr 2009 13:48:57 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 13:52:54 GMT]]></title><description><![CDATA[<p>Hi badestrand,</p>
<p>ist es doch? Siehe mein Minibeispiel. Oder irre ich da?</p>
<p>Uwe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691264</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691264</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 13:52:54 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 13:55:31 GMT]]></title><description><![CDATA[<p>uwerothfeld schrieb:</p>
<blockquote>
<p>ist es doch? Siehe mein Minibeispiel. Oder irre ich da?</p>
</blockquote>
<p>Nein! Badestrand hat recht, habe es auch vollkommen übersehen. Du machst in der *.cpp ein <code>using namespace ast;</code> , was aber nicht das gleiche ist, wie wenn du alles in den Rumpf von <code>namespace ast</code> setzen würdest.</p>
<p>Am besten schreibst du die *.cpp auf die folgende Art und Weise:</p>
<pre><code class="language-cpp">/*
 * File:   astterm.cpp
 */
#include &quot;ASTTerm.h&quot;

namespace ast {

ASTTerm::ASTTerm(int vn) {
    this-&gt;i = vn;
}//End ASTTerm

int ASTTerm::getI() const {
    return this-&gt;i;
}//End getI

std::ostream&amp; operator&lt;&lt;( std::ostream&amp; s, const ASTTerm&amp; t) {

    //return s &lt;&lt; t.i; //geht nicht trotz friend
    return s &lt;&lt; t.getI(); //geht

}//End operator&lt;&lt;

} // ast
</code></pre>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1691265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691265</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Sun, 05 Apr 2009 13:55:31 GMT</pubDate></item><item><title><![CDATA[Reply to uint8_t und cout on Sun, 05 Apr 2009 14:06:20 GMT]]></title><description><![CDATA[<p>Hi Jungs,</p>
<p>Es geht!!!!! <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="👍"
    /> Ist ja der WAHNSINN!!! Geil. Ich bin begeistert. Vielen, vielen, vielen Dank für Eure Hilfe. Man, da wäre ich nie drauf gekommen. Super. Es geht wie ne eins. Toll. Vielen Dank für Eure Hilfe.</p>
<p>Uwe, der vor Freude im Viereck springt.</p>
<p>Thread *close* sozusagen!!! <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/1691272</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1691272</guid><dc:creator><![CDATA[uwerothfeld]]></dc:creator><pubDate>Sun, 05 Apr 2009 14:06:20 GMT</pubDate></item></channel></rss>