<?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[&#x27;&amp;lt;&amp;lt;&#x27; operator überladen]]></title><description><![CDATA[<p>Hallo Leute</p>
<p>ich hab mir hier eine Klasse (nur zur Übung zum thema OOP) geschrieben und will den Ausgabe '&lt;&lt;' operator überladen</p>
<p>problem ist nur dass visual c++ 2008 debkt dass ich den binären '&lt;&lt;' operator meine und mir deshalb ohne ende fehler anzeigt:</p>
<pre><code class="language-cpp">// Array.h
#include &lt;iostream&gt;
#include &lt;ostream&gt;

using namespace std;

class Array
{
public:
    // zeugs
    ostream&amp; operator &lt;&lt; (ostream&amp; stream, Array const&amp; obj)
    {
          obj.ausgeben(stream);
	  return stream;
    }

    void ausgeben(ostream&amp; stream) const;
    // zeugs
};
</code></pre>
<pre><code class="language-cpp">// Array.cpp
#include &quot;Array.h&quot;
#include &lt;iostream&gt;
#include &lt;ostream&gt;

void Array::ausgeben(std::ostream&amp; stream) const
{
	for(UINT i = 0; i &lt; length; ++i )
	{
		if ( i%3 == 0 )
			stream&lt;&lt;std::endl;
		stream&lt;&lt;value[i];
	}
	stream&lt;&lt;std::endl;
}
</code></pre>
<pre><code class="language-cpp">// Main.cpp

int main()
{
     Array c(/* Ctor Parameter */)
     c.ausgeben(cout);                  // klappt
     cout&lt;&lt; c;                          // klappt nicht

     system(&quot;PAUSE&quot;);
     return 0;
}
</code></pre>
<pre><code>error C2804: Binärer Operator '&lt;&lt;' hat zu viele Parameter
error C2333: 'Array::operator &lt;&lt;': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen
error C2804: Binärer Operator '&lt;&lt;' hat zu viele Parameter
error C2333: 'Array::operator &lt;&lt;': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen
</code></pre>
<p>das sind die fehler (mich wunderts nur warum die doppelt ausgegeben werden????)</p>
<p>naja es klappt halt nicht</p>
<p>gruss Skym0sh0³</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/211089/lt-lt-operator-überladen</link><generator>RSS for Node</generator><lastBuildDate>Wed, 19 Aug 2026 08:52:59 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/211089.rss" rel="self" type="application/rss+xml"/><pubDate>Fri, 18 Apr 2008 15:03:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Fri, 18 Apr 2008 15:03:39 GMT]]></title><description><![CDATA[<p>Hallo Leute</p>
<p>ich hab mir hier eine Klasse (nur zur Übung zum thema OOP) geschrieben und will den Ausgabe '&lt;&lt;' operator überladen</p>
<p>problem ist nur dass visual c++ 2008 debkt dass ich den binären '&lt;&lt;' operator meine und mir deshalb ohne ende fehler anzeigt:</p>
<pre><code class="language-cpp">// Array.h
#include &lt;iostream&gt;
#include &lt;ostream&gt;

using namespace std;

class Array
{
public:
    // zeugs
    ostream&amp; operator &lt;&lt; (ostream&amp; stream, Array const&amp; obj)
    {
          obj.ausgeben(stream);
	  return stream;
    }

    void ausgeben(ostream&amp; stream) const;
    // zeugs
};
</code></pre>
<pre><code class="language-cpp">// Array.cpp
#include &quot;Array.h&quot;
#include &lt;iostream&gt;
#include &lt;ostream&gt;

void Array::ausgeben(std::ostream&amp; stream) const
{
	for(UINT i = 0; i &lt; length; ++i )
	{
		if ( i%3 == 0 )
			stream&lt;&lt;std::endl;
		stream&lt;&lt;value[i];
	}
	stream&lt;&lt;std::endl;
}
</code></pre>
<pre><code class="language-cpp">// Main.cpp

int main()
{
     Array c(/* Ctor Parameter */)
     c.ausgeben(cout);                  // klappt
     cout&lt;&lt; c;                          // klappt nicht

     system(&quot;PAUSE&quot;);
     return 0;
}
</code></pre>
<pre><code>error C2804: Binärer Operator '&lt;&lt;' hat zu viele Parameter
error C2333: 'Array::operator &lt;&lt;': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen
error C2804: Binärer Operator '&lt;&lt;' hat zu viele Parameter
error C2333: 'Array::operator &lt;&lt;': Fehler in Funktionsdeklaration; Funktionstext wird übersprungen
</code></pre>
<p>das sind die fehler (mich wunderts nur warum die doppelt ausgegeben werden????)</p>
<p>naja es klappt halt nicht</p>
<p>gruss Skym0sh0³</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494257</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494257</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 18 Apr 2008 15:03:39 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Fri, 18 Apr 2008 15:14:26 GMT]]></title><description><![CDATA[<p>Du musst den &lt;&lt; Operator global überladen, dass heisst, er darf nicht Member Deiner Klasse sein.<br />
Also als Friend deklarieren und dann global überladen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494261</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494261</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 18 Apr 2008 15:14:26 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Fri, 18 Apr 2008 15:27:21 GMT]]></title><description><![CDATA[<p>also in <a href="http://tutorial.schornboeck.net/inhalt.htm" rel="nofollow">diesem</a> tutorial steht dass es auch so geht, und ich ja genau das gemacht, oder etwa nicht?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494265</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494265</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 18 Apr 2008 15:27:21 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Fri, 18 Apr 2008 15:29:14 GMT]]></title><description><![CDATA[<p>Skym0sh0 schrieb:</p>
<blockquote>
<p>also in <a href="http://tutorial.schornboeck.net/inhalt.htm" rel="nofollow">diesem</a> tutorial steht dass es auch so geht, und ich ja genau das gemacht, oder etwa nicht?</p>
</blockquote>
<p>Nein.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494267</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494267</guid><dc:creator><![CDATA[MFK]]></dc:creator><pubDate>Fri, 18 Apr 2008 15:29:14 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Fri, 18 Apr 2008 15:32:04 GMT]]></title><description><![CDATA[<p>Nein, der operator&lt;&lt; in dem Tutorial gehört <strong>nicht</strong> zur Klasse für die er überladen wird. Guck es Dir mal genau an.<br />
Dein überladener operator&lt;&lt; ist hingegen ein Member Deiner Array-Klasse.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494270</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494270</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Fri, 18 Apr 2008 15:32:04 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Fri, 18 Apr 2008 15:45:17 GMT]]></title><description><![CDATA[<p>ah shit stimmt</p>
<p>jetzt seh ichs <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f621.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--pouting_face"
      title=":rage:"
      alt="😡"
    /></p>
<p>danke</p>
<p>aber ist es nicht übersichtlicher und sinnvoller den nur in der klasse zu überladen<br />
sprich so wie ichs eigendlich vorhatte?</p>
<p>und noch schnell ne frage:</p>
<p>wenn ich hier</p>
<pre><code class="language-cpp">std::cout&lt;&lt; c;
</code></pre>
<p>statt</p>
<pre><code class="language-cpp">cout
</code></pre>
<p>eifnach folgendes schreibe:</p>
<pre><code class="language-cpp">#include &lt;fstream&gt;
using namespace std;

int main()
{
    Array a;
    ofstream out(&quot;blabla.txt&quot;);
    out &lt;&lt; a;
    // rest
}
</code></pre>
<p>dann sollte das doch auch gehen oder nich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494281</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494281</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Fri, 18 Apr 2008 15:45:17 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Fri, 18 Apr 2008 21:30:01 GMT]]></title><description><![CDATA[<p>std:: bezeichnet lediglich den Namespace.<br />
Ob du jetzt std:: überall vorneran setzt oder einmal using namespace std; schreibst, dann ist das äquivalent. Jedoch Achtung! In einem Header könnte das ungewollte Folgen nach sich ziehen. Wenn es keinen guten Grund gibt, würde ich empfehlen überall den Namespace voreran zu setzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494410</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494410</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Fri, 18 Apr 2008 21:30:01 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Sat, 19 Apr 2008 12:25:25 GMT]]></title><description><![CDATA[<p>mir gings eigendlich um den stream</p>
<p>also cout geht ja and en bildschirm aber ofstream an dateien</p>
<p>das sollte dann auch klappen oder?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494576</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494576</guid><dc:creator><![CDATA[Skym0sh0]]></dc:creator><pubDate>Sat, 19 Apr 2008 12:25:25 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Sat, 19 Apr 2008 12:34:07 GMT]]></title><description><![CDATA[<p>Das habe ich dir ja beantwortet, dass es keine Rolle spielt.. <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>Um es klar zu sagen: &quot;Ja, das geht auch so!&quot;. Aber warum hast du das nicht einfach ausprobiert?!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494578</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494578</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Sat, 19 Apr 2008 12:34:07 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Sat, 19 Apr 2008 12:44:41 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">aber ist es nicht übersichtlicher und sinnvoller den nur in der klasse zu überladen 
sprich so wie ichs eigendlich vorhatte?
</code></pre>
<p>jain.<br />
Es ist schon besser, den Operator in der Klasse zu überladen, aber in diesem Fall nicht möglich, weil du nicht den Operator der Arrayklasse überladen müsstest sondern den der ostream Klasse.<br />
Wenn du den Operator in der Klasse überlädst kannst du auch nur einen Parameter angeben und das ist der zweite.</p>
<p>Aaaber, es gibt noch eine Möglichkeit das in der Klasse zu schreiben, aber die solltest du eigentlich nicht nutzen, da es nicht zur Klasse gehört und die Kapselung bricht.<br />
Du kannst ein friend vor die Operatorüberladung setzen<br />
(also:<br />
[cpp} friend ostream&amp; operator &lt;&lt; (ostream&amp; stream, Array const&amp; obj)<br />
{<br />
obj.ausgeben(stream);<br />
return stream;<br />
}[/cpp])</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494582</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494582</guid><dc:creator><![CDATA[So siehts aus]]></dc:creator><pubDate>Sat, 19 Apr 2008 12:44:41 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Sat, 19 Apr 2008 14:58:11 GMT]]></title><description><![CDATA[<p>So siehts aus schrieb:</p>
<blockquote>
<pre><code class="language-cpp">aber ist es nicht übersichtlicher und sinnvoller den nur in der klasse zu überladen 
sprich so wie ichs eigendlich vorhatte?
</code></pre>
<p>jain.<br />
Es ist schon besser, den Operator in der Klasse zu überladen, aber in diesem Fall nicht möglich, weil du nicht den Operator der Arrayklasse überladen müsstest sondern den der ostream Klasse.<br />
Wenn du den Operator in der Klasse überlädst kannst du auch nur einen Parameter angeben und das ist der zweite.</p>
<p>Aaaber, es gibt noch eine Möglichkeit das in der Klasse zu schreiben, aber die solltest du eigentlich nicht nutzen, da es nicht zur Klasse gehört und die Kapselung bricht.<br />
Du kannst ein friend vor die Operatorüberladung setzen<br />
(also:<br />
[cpp} friend ostream&amp; operator &lt;&lt; (ostream&amp; stream, Array const&amp; obj)<br />
{<br />
obj.ausgeben(stream);<br />
return stream;<br />
}[/cpp])</p>
</blockquote>
<p>Dann gehört operator&lt;&lt; auch nicht zur Klasse, sondern hat lediglich zugrtiff auf deren private Elemente.<br />
Und Friend-Funktionen/Klasse weichen nicht zwangsläufig die Kapselung auf. Es gibt auch sinnvolle Anwendungen, wo, im Gegenteil, die Kapselung gestärkt wird.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494663</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494663</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Sat, 19 Apr 2008 14:58:11 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Sat, 19 Apr 2008 15:04:45 GMT]]></title><description><![CDATA[<p>Ist schon klar, ging ja nur darum, dass er gesagt hat, es sei übersichtlicher in der Klasse und nicht darum, das wirklich der Klasse zugehörig zu machen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1494666</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1494666</guid><dc:creator><![CDATA[So Siehts Aus]]></dc:creator><pubDate>Sat, 19 Apr 2008 15:04:45 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Wed, 29 Jun 2011 08:40:07 GMT]]></title><description><![CDATA[<p>Hallo,<br />
Ich hab ein ganz ähnliches Problem.<br />
Habe eine KLasse FELD geschrieben (nur zum Üben von C++). Objekte dieser Klasse sind char - Arrays. Wenn ich jetzt neue Objekte erzeuge und diese mit Srtings initialisiere, dann klappt das auch. Nur die Ausgabe auf den Bildschirm klappt nicht, und ich weiß nicht warum. Hab die freie Ausgabefunktion als friend der Klasse deklariert und trotzdem kann die Funktion nicht auf die privaten Attribute der KLasse zugreifen!!???<br />
-------------------------------------------------------</p>
<pre><code class="language-cpp">// Feld.h
#include &lt;iostream&gt;
using namespace std;

class CFeld  
{
	friend ostream&amp; operator&lt;&lt;(ostream&amp;, const CFeld&amp;);
public:
	CFeld(char*);
	CFeld(const CFeld&amp;);
	CFeld();
	virtual ~CFeld();

private:
	char* startptr;
	int dim;
};

#endif
-------------------------------------------------------

Feld.cpp

#include &lt;iostream&gt;
using namespace std;
#include &quot;Feld.h&quot;
#include &quot;string.h&quot;

//////////////////////////////////////////////////////////////////////
// Konstruktion/Destruktion
//////////////////////////////////////////////////////////////////////

CFeld::CFeld()
{
	dim = 0;
	startptr = NULL;
}

CFeld::~CFeld()
{

}

CFeld::CFeld(const CFeld&amp; feld)
{
	dim = feld.dim;						
	startptr = new char[dim];
	for (int i = 0; i &lt;= dim; i++)
		startptr[i] = feld.startptr[i];
}

CFeld::CFeld(char* string)
{
	for(int i = 0; string[i] != '\0'; i++);
	dim = i;
	startptr = new char[dim];
	strcpy(startptr, string);
}

ostream&amp; operator&lt;&lt;(ostream&amp; os, const CFeld&amp; feld)
{
	for(int i = 0; i &lt; (feld.dim); i++)
	{
		os &lt;&lt; feld.startptr[i];

	}
	return os;
}
---------------------------------------------------------------

main.cpp

#include &lt;iostream&gt;
using namespace std;

#include &quot;Feld.h&quot;

void main (void)
{
	CFeld s1 = &quot;Guten&quot;;
	CFeld s2 = &quot;Morgen&quot;;

	CFeld s3;

	CFeld s4 = s1;
	CFeld s5 = s2;

	cout&lt;&lt;s1&lt;&lt;&quot; &quot;&lt;&lt;s2&lt;&lt;endl;

}
</code></pre>
<p>---------------------------------------------------</p>
<p>Kann mir da jemand helfen???</p>
<p>Viele Grüße</p>
<p>/edit pumuckl: cpp-Tags, demnächst bitte selbst machen!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1514269</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514269</guid><dc:creator><![CDATA[C++learner 0]]></dc:creator><pubDate>Wed, 29 Jun 2011 08:40:07 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Thu, 22 May 2008 13:02:46 GMT]]></title><description><![CDATA[<p>Schau Dir nochmal genau an, was Du hier treibst:</p>
<pre><code class="language-cpp">CFeld::CFeld(char* string)
{
    for(int i = 0; string[i] != '\0'; i++);
    dim = i;
    startptr = new char[dim];
    strcpy(startptr, string);
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1514284</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514284</guid><dc:creator><![CDATA[Tachyon]]></dc:creator><pubDate>Thu, 22 May 2008 13:02:46 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Thu, 22 May 2008 14:59:23 GMT]]></title><description><![CDATA[<p>Tachyon schrieb:</p>
<blockquote>
<p>Also als Friend deklarieren und dann global überladen.</p>
</blockquote>
<p>warum als friend?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1514372</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1514372</guid><dc:creator><![CDATA[zwutz]]></dc:creator><pubDate>Thu, 22 May 2008 14:59:23 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Wed, 29 Jun 2011 08:41:35 GMT]]></title><description><![CDATA[<p><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="😕"
    /> hab folgende Programme geschrieben</p>
<pre><code class="language-cpp">#include &lt;string&gt; 

class mann 
{ 
  public: 
    mann(std::string name) 
      : Name(name) 
    { 
    } 

    friend std::ostream &amp;operator&lt;&lt;(std::ostream &amp;ostr, mann &amp;m); 

  private: 
    std::string Name; 
}; 

#include &quot;mann.h&quot; 
#include &lt;iostream&gt; 

std::ostream &amp;operator&lt;&lt;(std::ostream &amp;ostr, mann &amp;m) 
{ 
  return ostr &lt;&lt; m.Name; 
} 

#include &quot;mann.h&quot; 
#include &lt;iostream&gt; 

int main() 
{ 
  mann m(&quot;Meier&quot;); 
  std::cout &lt;&lt; m &lt;&lt; std::endl; 
}
</code></pre>
<p>Das hab ich dann auch kompiliert und läuft. Aber folgendes Programm läuft nicht da bekomm ich fehlermeldungen:</p>
<pre><code>make
g++ -g -c zeit.cc -o zeit.o
In file included from zeit.cc:1:0:
zeit.h:82:79: error: non-member function ‘std::ostream&amp; std::operator&lt;&lt;(std::ostream&amp;, const std::zeit&amp;)’ cannot have cv-qualifier
zeit.cc:203:71: error: non-member function ‘std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const std::zeit&amp;)’ cannot have cv-qualifier
make: *** [zeit.o] Fehler 1
</code></pre>
<pre><code class="language-cpp">// Sicherstellen daß zeit.h nur einmal benutzt wird
#ifndef ZEIT_H
#define ZEIT_H

#include &lt;fstream&gt;

namespace std{
    class zeit
    {
    protected:
	long int zeitpunkt;

    public:
	// ctor
	zeit();
	// allg. ctor mit default-Werten 
	zeit(int sommerzeit, int tag, int monat, int jahr, int stunde, int minuten);
	// Copy ctor
	zeit( const zeit&amp; _zeitpunkt );
	// dtor
	virtual ~zeit() {};    // Ohne Funktionalität, für abgeleitete Klassen

	// Funktion zum setzen der Messzeit mit Vorgabewerten
	virtual bool setZeitpunkt(int sz = 0, int t = 1, int m = 0, int j = 0, int s = 0, int min = 0);
	virtual bool setZeitpunkt(long int _z) {zeitpunkt = _z;};
	// Zum setzen des Zeitpunkts auf Systemzeit des Rechners
	virtual bool setHeute();
        // Funktion um den Tag zu ändern
	virtual bool setTag(int _day);
        // Monatsänderung
	virtual bool setMonat(int _month);
        // Jahresänderung
	virtual bool setJahr(int _year);
        // Stundenänderung
	virtual bool setStunde(int _hour);
        // Minutenänderung
	virtual bool setMinute(int _minute);

	// Gibt den Wert des Zeitpunkts zurück als zahl
	virtual long int getZeitpunkt() const;
        // Gibt den Tag als Zahl zurück
	virtual int getTag() const;
        // Gibt den Monat als Zahl zurück
	virtual int getMonat() const;
        // Gibt das Jahr als Zahl zurück
	virtual int getJahr() const;
        // Gibt die Stunde als Zahl zurück
	virtual int getStunde() const;
        // Gibt die Minute als Zahl zurück
	virtual int getMinute() const;
 	// Bildschirmausgabe der Zeit in Form: tt.mm.jjjj ss:mm
	virtual std::ostream&amp; ausgabe(std::ostream&amp; stream) const;

	// freund da ostream nicht direkt zugreifbar...
	friend std::ostream&amp; operator&lt;&lt;(std::ostream&amp; output, const std::zeit&amp; wann) const;
    };
}
//--------------------------------------------------------------------
// friend operator zur ausgabe....
//--------------------------------------------------------------------
std::ostream&amp; operator&lt;&lt;(std::ostream&amp; output, const std::zeit&amp; wann) const
{
	std::ostringstream ss;

	ss &lt;&lt; std::setw(2) &lt;&lt; std::setfill('0') &lt;&lt; wann.getTag();

	return(output &lt;&lt; ss);
}
</code></pre>
<p>kann mir jemand sagen was ich falsch mache? Bin schon über eine Woche am suchen und finde den Fehler nicht?</p>
<p>/edit pumuckl: code-Tags bitte nochmal üben <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/2085873</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085873</guid><dc:creator><![CDATA[thepower]]></dc:creator><pubDate>Wed, 29 Jun 2011 08:41:35 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Wed, 29 Jun 2011 08:54:54 GMT]]></title><description><![CDATA[<p>Die Fehlermeldungen sind doch relativ eindeutig:</p>
<blockquote>
<p>zeit.h:82:79: error: non-member function ‘std::ostream&amp; std::operator&lt;&lt;(std::ostream&amp;, const std::zeit&amp;)’ cannot have cv-qualifier<br />
zeit.cc:203:71: error: non-member function ‘std::ostream&amp; operator&lt;&lt;(std::ostream&amp;, const std::zeit&amp;)’ cannot have cv-qualifier</p>
</blockquote>
<p>Mit cv-qualifier ist das &quot;const&quot; in am Ende der Zeilen 55 und 61 deines Codes gemeint.<br />
Der operator&lt;&lt; ist keine Memberfunktion, sondern nur ein friend der Klasse, weswegen du ihn nicht als &quot;const&quot; deklarieren kannst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085884</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085884</guid><dc:creator><![CDATA[Hans Im Glück]]></dc:creator><pubDate>Wed, 29 Jun 2011 08:54:54 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Wed, 29 Jun 2011 09:11:19 GMT]]></title><description><![CDATA[<p>danke sehr, aber jetzt bin ich nicht wirklich weiter, die referenz sollte doch eigentlich die operatorfunktion sein???</p>
<p>[make<br />
g++ -g -c <a href="http://hauptfenster.cc" rel="nofollow">hauptfenster.cc</a> -o hauptfenster.o<br />
g++ neulesen.o hauptfenster.o zeit.o zucker.o texfunctions.o -o programm<br />
hauptfenster.o: In function <code>main': /home/karlscheidt/Dokumente/programmieren/programme\_ks/versuche/zucker20062011/hauptfenster.cc:15: undefined reference to</code>std::operator&lt;&lt;(std::basic_ostream&lt;char, std::char_traits&lt;char&gt; &gt;&amp;, std::zeit const&amp;)'<br />
collect2: ld returned 1 exit status<br />
make: *** [programm] Fehler 1<br />
]</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085899</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085899</guid><dc:creator><![CDATA[thepower]]></dc:creator><pubDate>Wed, 29 Jun 2011 09:11:19 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Wed, 29 Jun 2011 09:15:28 GMT]]></title><description><![CDATA[<p>nimm erstmal deine zeit-Klasse aus dem namespace std - der ist reserviert, da darf nicht jeder dran.<br />
Danach schau mal in die FAQ, da gibts einen Eintrag zum Thema &quot;undefined reference&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2085902</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2085902</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 29 Jun 2011 09:15:28 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Wed, 29 Jun 2011 13:10:26 GMT]]></title><description><![CDATA[<p>Vielen dank pumuckl,</p>
<p>hab namespace std aus dem Programm genommen und jetzt funktionierts wenn ich auch noch nicht blicke warum, aber warscheinlich find ich diese Lösung bei Stroustrup...</p>
<p>aber eine andere Frage, was meintest du mit sourcecode richtig einbinden? Da steh ich auf der Leitung?<br />
lg<br />
KS</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086071</guid><dc:creator><![CDATA[thepower]]></dc:creator><pubDate>Wed, 29 Jun 2011 13:10:26 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Wed, 29 Jun 2011 13:55:48 GMT]]></title><description><![CDATA[<p>thepower schrieb:</p>
<blockquote>
<p>hab namespace std aus dem Programm genommen und jetzt funktionierts wenn ich auch noch nicht blicke warum,</p>
</blockquote>
<p>Der namespace std ist <strong>reserviert</strong>, d.h du darfst nichts neues dort einführen. Punkt. Einzige Ausnahme sind Spezialisierungen für Templates aus namespace std, z.B. std::swap.</p>
<p>Der Linkerfehler kam aber vermutlich eher daher, dass du operator&lt;&lt; zwar innerhalb der Klasse zeit im namensraum std als friend deklariert hast, aber ihn nicht im namensraum std definiert hast (sondern im globalen namensraum). ggf. wäre da die freind-deklaration so anzupassen gewesen, dass du den voll qualifizierten Namen (also ::operator&lt;&lt;) angeben müsstest.</p>
<p>Aber wie gesagt, Finger weg von namespace std.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086103</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086103</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Wed, 29 Jun 2011 13:55:48 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Wed, 29 Jun 2011 21:42:43 GMT]]></title><description><![CDATA[<p>pumuckl schrieb:</p>
<blockquote>
<p>Einzige Ausnahme sind Spezialisierungen für Templates aus namespace std</p>
</blockquote>
<p>Ist das so? Ich dachte bisher, man darf nicht mal das.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086332</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086332</guid><dc:creator><![CDATA[314159265358979]]></dc:creator><pubDate>Wed, 29 Jun 2011 21:42:43 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Thu, 30 Jun 2011 00:25:54 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Einzige Ausnahme sind Spezialisierungen für Templates aus namespace std</p>
</blockquote>
<p>Ist das so? Ich dachte bisher, man darf nicht mal das.</p>
</blockquote>
<p>Ja. Siehe dazu <a href="http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2011/n3242.pdf" rel="nofollow">N3242</a> -&gt; 17.6.4.2</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086380</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086380</guid><dc:creator><![CDATA[inter2k3]]></dc:creator><pubDate>Thu, 30 Jun 2011 00:25:54 GMT</pubDate></item><item><title><![CDATA[Reply to &#x27;&amp;lt;&amp;lt;&#x27; operator überladen on Thu, 30 Jun 2011 00:38:14 GMT]]></title><description><![CDATA[<p>314159265358979 schrieb:</p>
<blockquote>
<p>pumuckl schrieb:</p>
<blockquote>
<p>Einzige Ausnahme sind Spezialisierungen für Templates aus namespace std</p>
</blockquote>
<p>Ist das so? Ich dachte bisher, man darf nicht mal das.</p>
</blockquote>
<p>Das war schon immer so, sofern selbstdefinierte oder von diesen abgeleitete Typen im Spiel sind.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2086382</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2086382</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 30 Jun 2011 00:38:14 GMT</pubDate></item></channel></rss>