说我得到了这个C ++代码:
class class1{
class2 *x;
}
class class2{
class1 *x;
}
编译器会在第2行给出错误,因为它找不到class2,如果我切换了类的顺序,则相同。我该如何解决这个问题?
答案 0 :(得分:22)
两件事 - 一,你在课堂声明后需要分号:
class class1{
class2 *x;
};
class class2{
class1 *x;
};
二,您可以在类的定义前面创建声明。这告诉编译器这个类是否存在,你还没有定义它。在这种情况下,请在class2
的定义前面加上class1
声明:
class class2 ;
class class1{
class2 *x;
};
class class2{
class1 *x;
};
答案 1 :(得分:3)
答案 2 :(得分:2)
首先声明class2:
class class2;
class class1{
class2 *x;
};
class class2{
class1 *x;
};