Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #19096
| From | Victor Bazarov <v.bazarov@comcast.invalid> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: casting from 'const string' to a 'non-constant string' |
| Date | 2012-10-19 14:42 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <k5s704$cs9$1@dont-email.me> (permalink) |
| References | <007be9fb-b37a-4fd7-8778-f17994b52fb4@googlegroups.com> |
On 10/19/2012 8:36 AM, Rene Ivon Shamberger wrote:
> const std::string& someClass::someMethod(){ return some_string = "Bla Bla Bla"; }
What's 'some_string'? A member? A global variable?
> ....
> const std::string& myMethod(){
> someClass obj;
> return obj.someMethod();
Right after this expression is evaluated and its value is prepared to be
returned, the 'obj' object is destroyed. *If* 'someMethod' returns part
of the object for which it's called, as a reference to const, that
reference becomes *invalid* as soon as 'obj' is destroyed, i.e. outside
of the 'myMethod' function. IOW, you can't use the return value of the
'myMethod' function at all - that's undefined behavior.
> }
>
> Left as it is, this example will give me a warning stating that the return value from myMethod is a local value, but if I change the code to:
>
> const std::string&
> someClass::someMethod(){ return some_string = "Bla Bla Bla"; }
> const std::string& myMethod(){
> someClass obj;
> std::string tmp = obj.someMethod(); /// New code
> return temp;
> }
> The compiler complains saying that conversion from 'const string' to 'string' is not permited.
On which line? What's 'temp'? Is it a global variable? Where is this
'myMethod' function defined? A namespace scope or inside another class?
> How can I remove this error?
Don't "remove this error". Code correctly. Do not return references to
local objects. Ever.
Also, read the FAQ 5.8.
V
--
I do not respond to top-posted replies, please don't ask
Back to comp.lang.c++ | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
casting from 'const string' to a 'non-constant string' Rene Ivon Shamberger <arbolone@gmail.com> - 2012-10-19 05:36 -0700 Re: casting from 'const string' to a 'non-constant string' Juha Nieminen <nospam@thanks.invalid> - 2012-10-19 12:55 +0000 Re: casting from 'const string' to a 'non-constant string' Victor Bazarov <v.bazarov@comcast.invalid> - 2012-10-19 14:42 -0400 Re: casting from 'const string' to a 'non-constant string' Andy Champ <no.way@nospam.invalid> - 2012-10-19 21:43 +0100
csiph-web