前向声明和课程

时间:2016-03-12 14:30:58

标签: c++ class forward-declaration

我正处理的情况是我试图定义两个相互依赖的类。这是我想要做的简化示例。

class a{
public:
    int ia;
    int printb(b in){
        return in.ib;
    }
};

class b{
public:
    int ib;
    int printb(a in){
        return in.ia;
    }
};

这给了我未定义的class b错误。我试过了

class b;

class a{
public:
    int ia;
    int printb(b in){
        return in.ib;
    }
};

class b{
public:
    int ib;
    int printb(a in){
        return in.ia;
    }
};

但这并没有解决问题。有什么想法吗?

1 个答案:

答案 0 :(得分:3)

您所要做的就是将成员函数的实现保持在类定义之外。然后,您可以确保在实现成员之前定义了两个类:

class b;

class a{
public:
    int printb(b in);
    int ia;
};

class b{
public:
    int ib;
    int printb(a in);
};

int a::printb(b in){
        return in.ib;
    }
int b::printb(a in){
        return in.ia;
    }