Re: Can you spot anything wrong with this class/structure?
In message <EcydnclyxKrKR83anZ2dnUVZ_s2tnZ2d@comcast.com>, Victor
Bazarov <v.Abazarov@comAcast.net> writes
Jim Langston wrote:
I use a game engine using MSVC++ .net 2003 and have no problems.
Doesn't really sound like it, since you're posting this...
Some users of DevC++ who use the same engine crash at times when a
copy of this structure is the return variable. I don't have access
to the code that is crashing, but the developer has been changing
functions that return the structure to return something else because
of this problem.
Personally, I don't see anything wrong with this structure and can't
imagine why it would be crashing in DevC++.
DevC++ is an IDE. How can a struct crash an IDE?
Anyway, without seeing the code that does crash, I can only make
a few suggestions, see below.
Aside from the all caps used outside of a macro which is frowned
upon, can you spot anything wrong with this strucutre? It looks
perfectly legitimite to me. ( I know the consructor should be using
an initializer list and I've suggested that ).
struct JVEC2
{
JVEC2(float x=0,float y=0){this->x=x;this->y=y;}
Ouch.
// Supported operators
JVEC2 operator+(JVEC2 a) const {JVEC2 temp;temp.x = x + a.x;temp.y
= y + a.y;return temp;}
Ugh... Yechhh! Here is the pattern you need to follow:
JVEC2 operator+(JVEC2 const& a) const {
return JVEC2(x + a.x, y + a.y);
}
Rewrite all non-compound operators.
You might also consider rewriting them to use the compound ones, to
guarantee consistency...
JVEC2 operator+(JVEC2 const & a) const
{ JVEC2 temp(*this); temp += a; return temp; }
.... or even rewriting them as friend binary functions, to make both
sides of the operator candidates for implicit conversions, if there are
any...
friend JVEC2 operator+(JVEC2 const & a, JVEC2 const & b)
{ JVEC2 temp(a); temp += b; return temp; }
--
Richard Herring