|
| Operator overloading igen Fra : PVI |
Dato : 13-06-03 10:54 |
|
Hejsa,
Jeg har brug for noget hjælp her.
Givet en klasse abc, som skal behandle nogle data.
jeg vil gerne kunne "streame" data ind i klassen og har forsøgt at
overloade "<<" men kan ikke få det til at virke.
F.eks. vil jeg gerne kunne gøre følgende :
abc << "Dette er en tekst" << 123 << 12.4 << char_ptr;
Måden jeg har løst det på indtil videre er at lave en metode Add og
overloaded med de nødvendige typer.
som : abc->Add(1), abc->Add("Constant text") og abc->Add(char_ptr);
Men jeg synes det er pænere og nemmere at bruge klassen ved at streame data
ind.
Gode forslag modtages med kyshånd.
På forhånd tak.
Peter
| |
Robert Larsen (13-06-2003)
| Kommentar Fra : Robert Larsen |
Dato : 13-06-03 13:26 |
|
PVI wrote:
> Hejsa,
>
> Jeg har brug for noget hjælp her.
>
> Givet en klasse abc, som skal behandle nogle data.
>
> jeg vil gerne kunne "streame" data ind i klassen og har forsøgt at
> overloade "<<" men kan ikke få det til at virke.
>
> F.eks. vil jeg gerne kunne gøre følgende :
>
> abc << "Dette er en tekst" << 123 << 12.4 << char_ptr;
>
> Måden jeg har løst det på indtil videre er at lave en metode Add og
> overloaded med de nødvendige typer.
>
> som : abc->Add(1), abc->Add("Constant text") og abc->Add(char_ptr);
>
> Men jeg synes det er pænere og nemmere at bruge klassen ved at streame data
> ind.
>
> Gode forslag modtages med kyshånd.
>
> På forhånd tak.
>
> Peter
Måske sådan her:
#include <string>
#include <iostream>
using namespace std;
class abc
{
public:
abc & operator<<(string str)
{
//Fyld kode i her
cout << "string: " << str << endl;
return *this;
}
abc & operator<<(int number)
{
//Fyld kode i her
cout << "int: " << number << endl;
return *this;
}
abc & operator<<(char * str)
{
//Fyld kode i her
cout << "char array: " << str << endl;
return *this;
}
};
int main(int argc, char ** argv)
{
abc a;
a << "Hello, World!" << 5 << string("Goodbye");
return 0;
}
[rcl@sideshow rcl]$ ./test
char array: Hello, World!
int: 5
string: Goodbye
[rcl@sideshow rcl]$
| |
PVI (13-06-2003)
| Kommentar Fra : PVI |
Dato : 13-06-03 14:15 |
|
Tusind tusind tak for hjælpen.
>
> #include <string>
> #include <iostream>
>
> using namespace std;
>
> class abc
> {
> public:
> abc & operator<<(string str)
> {
> //Fyld kode i her
> cout << "string: " << str << endl;
> return *this;
> }
> abc & operator<<(int number)
> {
> //Fyld kode i her
> cout << "int: " << number << endl;
> return *this;
> }
>
> abc & operator<<(char * str)
> {
> //Fyld kode i her
> cout << "char array: " << str << endl;
> return *this;
> }
> };
>
> int main(int argc, char ** argv)
> {
> abc a;
> a << "Hello, World!" << 5 << string("Goodbye");
> return 0;
> }
>
>
> [rcl@sideshow rcl]$ ./test
> char array: Hello, World!
> int: 5
> string: Goodbye
> [rcl@sideshow rcl]$
>
>
| |
|
|