应该在C ++中声明类的顺序?

时间:2009-04-16 17:39:33

标签: c++ class

说我得到了这个C ++代码:

class class1{
    class2 *x;
}

class class2{
    class1 *x;
}

编译器会在第2行给出错误,因为它找不到class2,如果我切换了类的顺序,则相同。我该如何解决这个问题?

3 个答案:

答案 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;
};