Discussion:
C++
Thomas Dodd
2003-02-24 16:20:45 UTC
Permalink
I had a question for a C++ programmer. Thought I might find one here :)


I have 2 classes that need to reference each other.

"headerA.h"
class A{
public:
int x;
int y;
B *left;
B *right;
}

"headerB.h"
class B{
public:
int a;
int b;
A *parent;
char foo();
}

Give that top is of type A, in top.left.foo() I need to modify top.right.a

Any ideas? I've tried passing a A* in the constructor for B, but the
compiler doesn't
realize that A is a class when I try to compile, and complains about no
type listed.

I seams to be a circular reference since A needs B and B needs A. This
cannot be that
unusual, and has probably been solved before, I just don't know how.

Right now moy only though is to make parent a void* and the cast it to a
A* in the
implementation of B. That removes all type checking though and I'd
rather not abuse
void pointers like that.

-Thomas
Thomas Dodd
2003-02-24 17:35:21 UTC
Permalink
Thanks to all who replied. That solved it.
Since only pointers to A and B are involved, a forward declaration
class A;
in front of class B and
That's the one that was causing me trouble.

I check the C++ books I had lying around and couldn't find forward
declaration.

After the mention here, I was looking at some other code and saw it used.
Now, why didn't I see that in the code before? :(

Thanks again all.

-Thomas
--
Psyche-list mailing list
Psyche-***@redhat.com
https://listman.redhat.com/mailman/listinfo/psyche-list
Loading...