Path: utzoo!attcan!utgpu!jarvis.csri.toronto.edu!mailrus!shadooby!samsung!ginosko!uunet!dlogics!dsa From: dsa@dlogics.UUCP (David Angulo) Newsgroups: comp.lang.c++ Subject: denying assignment to a returned value Message-ID: <226@dlogics.UUCP> Date: 27 Oct 89 16:54:56 GMT Organization: Datalogics Inc., Chicago Lines: 72 // Thanks, Andy and Doug, for pointing out potential coding errors in // libraries. I did in fact fall into such a trap. For example, I // coded: class a { char[10] a_s; public: operator char *() {return a_s;} }; // // which is, of course, a mistake because a user of class a can code: a an_a strcpy((char*)an_a,"something"); // // So, now we get to the question. How can I do what Andy suggests with // "const String operator+(..." // I cannot code it like this: class a { char[10] a_s; public: const operator char *() {return a_s;} }; // // because then I get the error message: bad result type for a::operator char*() // // Neither can I code it like this: class a { char[10] a_s; public: operator const char *() {return a_s;} }; // // because then I get the ubiquitous, stupid "syntax error." // I can't even try to get tricky and try something like: class a { char[10] a_s; public: const char* a_val() {return &a_s;} operator char *() {return a_val();} }; // // With this, I get: bad return value type for a::operator char*(): const char* (char* expected) // // So, the question is "How do I do it?" -- David S. Angulo (312) 266-3134 Datalogics Internet: dsa@dlogics.UUCP 441 W. Huron UUCP: ..!uunet!dlogics!dsa Chicago, Il. 60610 FAX: (312) 266-4473