by "Jim Langston" <tazmaster@[EMAIL PROTECTED]
>
May 3, 2008 at 09:03 PM
barcaroller wrote:
> "Pete Becker" <pete@[EMAIL PROTECTED]
> wrote in message
> news:2008050310124475249-pete@[EMAIL PROTECTED]
>>
>> At the point of "new A" the compiler has to generate code to create
>> an object of tpye A. Since it hasn't seen the definition of A, it
>> can't do that.
>
>
> Thank you for your response. Actually, it's not the new() that is
> causing me problems. Let me present the problem in another way.
>
>
> class A; // forward reference
>
> class B
> {
> int print()
> {
>
> }
>
> foo(A* a)
> {
> cout << a->print(); // compiler error here
> }
> }
>
> class A
> {
> int print()
> {
>
> }
>
> bar(B* b)
> {
> cout << b->print();
> }
> }
>
> main()
> {
> a = new A;
> b = new B;
>
> b->foo(a);
> a->bar(b);
> }
>
>
> Basically, I have two objects that are dependent on each other. I
> thought I would be okay as long as I use pointers to these objects. Is
> there a way around this problem (other than re-designing)?
Ouput of program is
21
#include <iostream>
class A; // forward reference
class B
{
public:
int print()
{
return 1;
}
void foo(A* a);
};
class A
{
public:
int print()
{
return 2;
}
void bar(B* b)
{
std::cout << b->print();
}
};
void B::foo(A* a)
{
std::cout << a->print();
}
main()
{
A* a = new A;
B* b = new B;
b->foo(a);
a->bar(b);
delete a;
delete b;
}
--
Jim Langston
tazmaster@[EMAIL PROTECTED]