65,179
社区成员




#ifndef CLASS_A_H
#define CLASS_A_H
#include "b.h"
class B;
class A
{
public:
void InvokeB()
{
B *b;
b->Print();
}
void Print()
{
std::cout << "This is class A\n";
}
//B *b;
};
#endif
#ifndef CLASS_B_H
#define CLASS_B_H
#include "a.h"
class A;
class B
{
public:
void InvokeA()
{
A *a;
a->Print();
}
void Print()
{
std::cout << "This is class B\n";
}
// A *a;
};
#endif
#include <iostream>
#include "a.h"
#include "b.h"
int main()
{
A aa;
aa.InvokeB();
//B bb;
//bb.a->Print();
}
In file included from a.h:4:0,
from main.cpp:3:
b.h: In member function ‘void B::InvokeA()’:
b.h:13:6: error: invalid use of incomplete type ‘class A’
a->Print();
^
b.h:5:7: error: forward declaration of ‘class A’
class A;
^
#include<iostream>
class A
{
public:
void InvokeB();
void Print()
{
std::cout << "this is class A" << std::endl;
}
};
class B
{
public:
void InvokeA();
void Print()
{
std::cout << "this is class B" << std::endl;
}
};
void A::InvokeB()
{
B *b;
b->Print();
}
void B::InvokeA()
{
A *a;
a->Print();
}
int main()
{
A aa;
aa.InvokeB();
}
非常感谢你们的解答!!!