Re: What am I doing wrong ?
<watkinsdev@hotmail.com> wrote in message
news:1178389159.671155.221820@l77g2000hsb.googlegroups.com...
On 5 May, 19:17, "Jim Langston" <tazmas...@rocketmail.com> wrote:
<watkins...@hotmail.com> wrote in message
news:1178388389.902966.137380@n59g2000hsh.googlegroups.com...
Hi,
I have created a mesh class in visual studio 6.0 c++.
I can create a device, render objects and can edit the objects by for
instancnce selecting a cluster of vertices and processing the vertices
and can do this multiple times on a sinlge vertex cluster.
The problem I have been encoutering is that, if I select a second
vertex cluster and try to edit that , the program crashes.
I have re-written the application from passing pointers to the mesh
object to functions to an application that passes references but I
still get the same type of problem.
in my current version, I declare a reference, m_ref and then pass
this object to the following sequence of function calls :
create sphere ( my_mesh& p_mesh ) returning p_mesh.
select_vertex_cluster ( my_mesh& p_mesh ) returning p_mesh.
Edit_vertex_cluster (( my_mesh& p_mesh ) returning p_mesh.)
If I call the Edit_vertex_cluster , for a second time, it just cannot
find any data, that has been created previously within the object.
I am loosing quite a lot of hair with this one and I have inplimented
a copy constructor but , really I am so confused right now that I just
have no idea what I should be doing .
Can anyone see what type of thing I may be doing wrong here?
I really would appriciate some help with this.
Thanks in advance,
I would guess that you are attempting to reseat a reference, which you
can
not do. Other than that, I would have to see the code.- Hide quoted
text -
- Show quoted text -
Is a reference reset if a return value is passed back to it ?
No. I made that mistake once and couldn't figure out why everything was
working for the first set of objects in my code but not the other 2 with the
same code. I was doing something like this:
MyClass& thisClass = (*it);
thisClass.name = "Hello";
// ... etc..
++it;
thisClass = (*it);
thisClass name = "Goodbye";
// .. etc...
Well, this just didn't work as I expected. I wound up changing the first
class twice and I actually posted in this newsgroup asking why. And of
course as soon as someone told me it was a dohhh!
MyClass& thisClass = (*it);
seats the refernce. thisClass points to the instance that it was pointing
to (in my case an iterator). So when I did assignments after it, it made
changes to where it was pointing to and all was well.
But, when I incremented my iterator, then tried to reseat the reference with
thisClass = (*it);
what was actually happening was that the reference was STILL pointing to
where it was before, it doesn't change. So it became a simple assignment.
Like a = b. So now the first instance got copied over with where it was
pointing to now.
The only time you can seat a refernce is on the declaration/defination line:
sometype& varname = // this is seating the refernce
or in a structure/class initalization list
class MyClass
{
public:
MyClass( sometype& thisInstance ): MyRef( thisInstance ) {} // This is
where it gets seated
private:
sometype& MyRef;
};