Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c++ > #10461
| From | Victor Bazarov <v.bazarov@comcast.invalid> |
|---|---|
| Newsgroups | comp.lang.c++ |
| Subject | Re: object copy with reference |
| Date | 2011-09-25 09:44 -0400 |
| Organization | A noiseless patient Spider |
| Message-ID | <j5nb7f$rhs$1@dont-email.me> (permalink) |
| References | <j5n445$knm$1@online.de> |
On 9/25/2011 7:43 AM, Philipp Kraus wrote:
> I have a class method that is run in different threads:
> myclass::mythreadmethod( mysuperclass& )
Is there any relationship between 'myclass' and 'mysuperclass'?
> mysuperclass is a reference variable, that is used during the thread is
> running.
OK, nothing strange here so far.
> Anyway the method should be myclass::mythreadmethod( mysuperclass ), so
> that
> each running thread has a own local copy of the object, but I can't
> switch the parameter
> because the method is derivated of another class.
So, the other class (from which your 'myclass' is derived) requires the
argument to be a reference to a non-const object. Seems OK. You can
implement your own
myclass::mythreadmethod_impl(mysuperclass)
by overriding the 'mythreadmethod' this way:
returntype myclass::mythreadmethod(mysuperclass& o)
{
mysuperclass local_o(o);
return this->mythreadmethod_impl(local_o);
}
(although, strictly speaking, the creation of local_o isn't necessary,
it's done here just for illustrating the fact of copying the 'o').
>
> I need in the method a local (deep-copy) of my object. So I create a
> clone method like
> myclass::mythreadmethod( mysuperclass& pobj )
> {
> mysuperclass& lobj = p_obj.clone();
> }
>
> In this case I get the compiler error, that I try to set up a temporary
> assignment.
"Temporary assignment"? What's that?
And what error do you get?
> The try to do it like
> myclass::mythreadmethod( mysuperclass& pobj )
> {
> mysuperclass& lobj;
You cannot declare a local object of type reference without initializing
it. That ought to be flagged by the compiler as an error.
> p_obj.clone(lobj);
> }
> create the message l_obj isn't initializate.
>
> Does anyone has some tips to create a working solution? The perfect
> solution
> should be a deep-copy of the pobj reference
See above. It does depend, however, on how 'mysuperclass' is defined.
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
object copy with reference Philipp Kraus <philipp.kraus@flashpixx.de> - 2011-09-25 13:43 +0200
Re: object copy with reference Victor Bazarov <v.bazarov@comcast.invalid> - 2011-09-25 09:44 -0400
Re: object copy with reference Philipp Kraus <philipp.kraus@flashpixx.de> - 2011-09-25 16:25 +0200
Re: object copy with reference Philipp Kraus <philipp.kraus@flashpixx.de> - 2011-09-25 17:59 +0200
Re: object copy with reference Goran <goran.pusic@gmail.com> - 2011-09-26 00:27 -0700
Re: object copy with reference Qi <no@no.no> - 2011-09-26 15:51 +0800
Re: object copy with reference Werner <werasm@gmail.com> - 2011-09-26 01:26 -0700
Re: object copy with reference Werner <werasm@gmail.com> - 2011-09-26 01:32 -0700
Re: object copy with reference Philipp Kraus <philipp.kraus@flashpixx.de> - 2011-09-26 21:02 +0200
Re: object copy with reference Werner <werasm@gmail.com> - 2011-09-26 23:34 -0700
Re: object copy with reference Werner <werasm@gmail.com> - 2011-09-27 02:08 -0700
Re: object copy with reference SG <s.gesemann@gmail.com> - 2011-09-27 04:10 -0700
Re: object copy with reference Werner <werasm@gmail.com> - 2011-09-27 06:56 -0700
csiph-web