10. november 2003 - 18:02Der er
7 kommentarer og 1 løsning
Undgå printf i C++
Vil kalde clog og få output foranstillet med "Main (debug): ". Eksempelvis skal
clog << "Division by (close to zero): " << TinyNumber << endl;
resultere i følgende output:
"Main (debug): Division by (close to zero): 0.000023\n".
Fordelen er, at n parametre kan angives uden at være typefaste som i printf. Kan jeg (jeg kan ikke, men kan nogen) nedarve clog og derved ændre dens << operator så ovenstående kommer til at virke?
Alternativet (der passer bedst til det nuværende problem): Kan man implementere noget lignende nedenstående pseudokode?
Hvis du vil sætte noget (automatisk) ind foran den almindelige tekst UDEN selv af skrive det, er du som udgangspunkt nødt til enten at overloade << operatoren for clog, eller lave en ny klasse med << operator i, og overloade << operatoren i den. Jeg tvivler meget på at du rent faktisk vil kunne slippe afsted med at overloade selve clog's '<<' operator, så nedarving er nok svaret, dvs. noget i stil med:
class xlog : clog { ostream& operator << (stream& a) { clog << "Main debug: " << a; } }
Og så skrive
xlog << "Division by (close to zero): " << TinyNumber << endl;
hrc >> Jo sikkert, jeg skriver derfor også bare "noget i stil med". Man kunne jo f.eks. nøjes med at skrive 'Main debug:' efter hver endl. Du vil jo i praksis også skulle overloade operatoren for alle andre datatype, du ønsker at kunne "hælde ud".
Synes godt om
Ny brugerNybegynder
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.