Avatar billede krismort Nybegynder
28. august 2002 - 21:34 Der er 5 kommentarer og
2 løsninger

cout?

Jeg vil gerne lave en klasse til at print tekst ud med
på skærmen ligesom cout gør det
det har jeg gjordt ved

class Cprint
{
public:
    void operator <<(char* tekst);
};

mit problem er bare at når jeg bruger operatoren

Cprint Cp;
Cp << "Tekst"

så kan jeg ikke bruge den igen i samme sætning
ligesom med cout
det skulle gerne være lavet så jeg kan skrive

Cp << "Tekst" << "Tekst2" << "Tekst3;
osvosv.

Kristian
Avatar billede soreno Praktikant
28. august 2002 - 21:58 #1
prøv:
ostream& operator<<(ostream &os, char* tekst);

..
ostream& operator<< (ostream &os, char* tekst)
{
    os << tekst;
    return os;
}
Avatar billede krismort Nybegynder
28. august 2002 - 22:51 #2
det her var hvad jeg prøvede ... men det lader til at jeg gør noget forkert
class Cprint
{
public:
    ostream& operator << (ostream &os, char* tekst) //*1 & *2
    {
      os << tekst;
      return os;
    }
};

void main()
{
Cprint Cp;
Cp << "hello world"; // *3
return;
}

compileren siger
1) error C2804: binary 'operator <<' has too many parameters
2) error C2333: '<<' : error in function declaration; skipping function body
3) error C2676: binary '<<' : 'class Cprint' does not define this operator or a conversion to a type acceptable to the predefined operator
Avatar billede soreno Praktikant
28. august 2002 - 23:13 #3
jeg misforstår muligvis hvad din ide er ?
dette var min ide om hvad du forestillede dig:
#include <iostream>

using namespace std;

class Cprint
{
  public:
      Cprint();
      friend ostream& operator<< (ostream &os, Cprint cp);
  private:
      char *buffer;
};

Cprint::Cprint()
{
  buffer = "Hello World";
}

ostream& operator<< (ostream &os, Cprint Cp) //*1 & *2
{
  os << Cp.buffer;
  return os;
}

int main(int argc, char **argv)
{
  Cprint Cp;
  cout << Cp << Cp << Cp << endl;

  return 0;
}
Avatar billede krismort Nybegynder
28. august 2002 - 23:26 #4
Jeg legede bare med tanken om det var muligt at lave en function ala cout der kan bruges på samme måde som cout. på den måde kunne jeg lave en lign cout funktion til min 3dengine's konsol.

GUI->Console->print << "Du har nu optjent " << (int)antalpoint << " point";
Avatar billede mbulow Nybegynder
28. august 2002 - 23:30 #5
Jeg tror det er det her du vil kunne:
-------------------------------------

#include <iostream>
#include <string>

using namespace std;

class Cprint{
  private:
      string m_sBuffer;
  public:
      string GetText(void) const;
      Cprint& operator<<(char *text);
};

string Cprint::GetText(void) const {
  return m_sBuffer;
}

Cprint& Cprint::operator<<(char *text){
  m_sBuffer += text;
  return *this;
}

void main(){
  Cprint cp;

  cp << "Hej" << " " << "med" << " " << "dig";

  cout << cp.GetText() << endl;
}
Avatar billede krismort Nybegynder
28. august 2002 - 23:41 #6
Ahh det var lige præsis hvad jeg havde i tankerne! i skal begge have 1000 tak!
Avatar billede krismort Nybegynder
28. august 2002 - 23:42 #7
Jeg er ked af at jeg ikke har flere points, men i skal nok få flere hvis i vil så snart jeg har fået svaret på nogen spørgsmål
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester