Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

11

12.01.2005, 18:53

wenn ich den operator lokal in der klasse definiere, gehen natürlich keine 2 parameter. global macht ers natürlich mit zwei *schäm*

wenn der rückgabewert vom typ Log& gehts. verstehe ich nicht. was macht das &? kenne es nur als adressoperator... :confused:

12

12.01.2005, 19:06

Der <<-Operator muss eine Referenz liefern und keine kopie und schon gar nicht einen zeiger.

Mach es einfach so:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
class Log
{
public:
   void add(const std::string& str)
   {
       buf += str;
   }

   const std::string& get() { return buf; }

private:
   std::string buf;
};

// für strings

Log& operator<< (Log& log, const std::string& str)
{
   log.add(str);
   return log;
}

// für z.B. ints

Log& operator<< (Log& log, const int i)
{
   std::stringstream ss;
   ss << i;
   log.add(ss.str());
}

// für std::cout

std::ostream& operator<< (std::ostream& os, Log& log)
{
   os << log.get();
   return os;
}


Dann kann man sachen wie z.B.

C-/C++-Quelltext

1
2
3
Log log;
log << "Du bist " << 12 << "Jahre alt";
std::cout << log << std::endl;
schreiben.
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

13

12.01.2005, 20:08

vielen vielen dank.
noch ne kleine frage: wie realisiert man das <<endl, sodass man soetwas aufrufen könnte:

C-/C++-Quelltext

1
log << "Text" << log_flush;         // oder so in die richtung


ist schöner, als extra noch ne methode aufzurufen *g*. allerdings hab ich kein plan wie's gehen soll. endl ist in der std ziemlich verwirrend definiert *g*

14

12.01.2005, 20:21

Zitat

endl ist in der std ziemlich verwirrend definiert *g*
Nein ist es eigentlich nicht ;)

Also alles will ich hier nicht vorsagen, du sollst schon ein bissel selber nachdenken.

Ich geb dir nur zwei Tipps:
Funktionen
Konstanten/Enumerationen

Den Rest must du dir schon selber ausdenken
Wichtig! Ich übernehme keinerlei Verantwortung für eventl. Datenverlust oder Schäden am Rechner ;D

Dave

Alter Hase

  • »Dave« ist der Autor dieses Themas

Beiträge: 757

Wohnort: Berlin

  • Private Nachricht senden

15

14.01.2005, 16:40

selber denken is ja doof :wirbel:
komme nich drauf.

Werbeanzeige