我遇到以下类嵌套的问题:
#include <iostream>
class A;
class B
{
public:
void test(A* a);
{
a->x = 'a';
};
};
class A
{
public:
char x;
B b;
};
int main(void)
{
A* a = new A();
}
详细说明,类A具有类B的实例,类B在方法中修改类A的对象。这会引发错误:
main.cpp:16:4:错误:无效使用不完整类型'A类'a-&gt; x =&#39; a&#39;;
到目前为止,没有任何意外,因为编译器还不知道A的属性。一个简单的解决方法是在完全声明A类之后放置B :: test(A * a)的定义,如下所示:
#include <iostream>
class A;
class B
{
public:
void test(A* a);
};
class A
{
public:
char x;
B b;
};
void B::test(A* a)
{
a->x = 'a';
}
int main(void)
{
A* a = new A();
}
但是,在我的实际代码中,这些类位于单独的头文件和各个.cpp文件中的方法定义中,这些文件与头文件一起编译。
这类问题的适当解决方法是什么?