[TriLUG] OT: C++ Question
Brian Henning
brian at strutmasters.com
Tue Jan 31 10:48:01 EST 2006
Ooo, good catch, Tanner. I bet if we saw a "stack trace" of the syntax
error, it'd be something along the lines of..
"In file included from point3d.h (vector3d.h):
In file included from vector3d.h (point3d.h):
In file point3d.h:
Syntax error, expected identifier yadda yadda yadda"
I believe Tanner is right about the forward declaration being one
solution, as well as it being a good indication that you may want to
rethink your class design/heirarchy.
Of course, my geometry skills are very faded at this point, but can you
really subtract a point from a vector? I wouldn't know how to do that.
In my ignorance of geometric operations, I'd suggest removing the
operator-(point3d) function altogether. That's the only member of
vector3d (such as it is now) that has a reference to point3d. If you
really need the function, maybe make a reverse-logic member function of
point3d such as vector3d subtractFrom(vector3d) which would subtract
itself from a vector and return the resultant vector.
Cheers,
~Brian
Tanner Lovelace wrote:
> On 1/31/06, Randy Barlow <rpbarlow at ncsu.edu> wrote:
>
>> Thanks Brian (and Tanner!) This was definitely an issue in my code, but
>>I'm still having problems with the vector3d identifier in my point3d.h file.
>> Here is point3d.h:
>>
>> #pragma once
>> #include "vector3d.h"
>
>
> [...snip...]
>
>
>>line in the code above. Here is vector3d.h:
>>
>> #pragma once
>> #include "point3d.h"
>
>
> There's your problems. You've told the compiler to only include
> things once and then gone and included them in each other.
> That's most definitely *not* going to work because, although
> the #pragma stops the infinite recursion of includes, you reference
> them from each class so one of the classes will be defined before
> the other and won't know anything about the other. You could try
> adding a forward declaration, but I really think you should just
> bit the bullet and rethink your code.
>
> Cheers,
> Tanner
>
> --
> Tanner Lovelace
> clubjuggler at gmail dot com
> http://wtl.wayfarer.org/
> (fieldless) In fess two roundels in pale, a billet fesswise and an
> increscent, all sable.
--
----------------
Brian A. Henning
strutmasters.com
336.597.2397x238
----------------
More information about the TriLUG
mailing list