Re: object copy with reference
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