13. april 2003 - 22:59Der er
8 kommentarer og 1 løsning
Overloade << og >>
Hej, Jeg har lavet en sequence class der bruger dynamic arrays. Mit problem er hvordan jeg overloader << >>, saaledes at jeg kan bruge cout og cin i min .cpp file. Jeg har pasted min class definition (haaber det er nok, ellers paster jeg ogsaa funktionerne)og har ogsaa indsat mit gaet for prototyper for << >>, hvilket er foelgende: istream& operator >>( istream& ins, sequence& target); ostream& operator <<( ostream& outs, sequence& display);
Men er der en der kan hjaelpe mig med implmentionen af de to funktioner, saaledes at jeg kan bruge min cout og cin i cpp i filen.
Paa forhaand tak!
//**************************************************** #ifndef TESTSEQUENCE_H #define TESTSEQUENCE_H #include <stdlib.h> class sequence { public: // TYPEDEFS and MEMBER CONSTANTS typedef double value_type; typedef size_t size_type; enum {DEFAULT_CAPACITY = 30};
Hej Arne_v, Tak for dit svar - jeg proevede at indsaette functionerne, men uden held. Jeg aendrede prototyperne fra at vaere nonmember til member, fordi de jo faar access til de private variabler, men det virker heller ikke. Her er fejlmeldingen jeg faar, maaske du kan forstaa hvad problemet er: Compiling... testsequence.cpp c:\documents and settings\my documents\testsequence.h(175) : error C2804: binary 'operator >>' has too many parameters c:\documents and settings\my documents\testsequence.h(176) : error C2804: binary 'operator <<' has too many parameters c:\documents and settings\my documents\testsequence.cxx(336) : error C2872: 'istream' : ambiguous symbol c:\documents and settings\my documents\testsequence.cxx(336) : error C2872: 'istream' : ambiguous symbol c:\documents and settings\my documents\testsequence.cxx(337) : error C2872: 'istream' : ambiguous symbol c:\documents and settings\my documents\testsequence.cxx(337) : error C2872: 'istream' : ambiguous symbol c:\documents and settings\my documents\testsequence.cxx(339) : error C2248: 'data' : cannot access private member declared in class 'sequence' c:\documents and settings\my documents\testsequence.h(186) : see declaration of 'data' c:\documents and settings\my documents\testsequence.cxx(339) : error C2679: binary '>>' : no operator defined which takes a right-hand operand of type 'double *' (or there is no acceptable conversion) c:\documents and settings\my documents\testsequence.cxx(345) : error C2872: 'ostream' : ambiguous symbol c:\documents and settings\my documents\testsequence.cxx(345) : error C2872: 'ostream' : ambiguous symbol Error executing cl.exe.
Ja, jeg kan se at den selvfoelgelig skal vaere en friend, siden den faar access til de private variabler. Desvaerre brokker den sig stadigvaek naar jeg compiler. Ville du have noget imod hvis jeg sender dig mine function implementation, saa du kan compile og maaske se den aabenbare fejl jeg laver? Tak!
ins >> *target.data; outs << *display.data << endl;
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.