我正在做一个小程序,只是为了玩课。
我上了两堂课,a和b。

我希望能够访问b中的a,反之亦然。
这是我到目前为止所得到的:

#ifndef A_HH_
#define A_HH_

#include <string>

class b;

class a
{
private:
    string aString;
    b* bClass;
public:
    a(){aString = "A";}
    string getString(){return aString;}
    string getBString(){return bClass->bString;}
};


#endif /* A_HH_ */


和b:

#ifndef B_HH_
#define B_HH_

#include <string>

class a;

class b
{
private:
    string bString;
    a* aClass;
public:
    b(){bString = "B";}
    string getString(){return bString;}
};


#endif /* B_HH_ */


我希望能够访问指针而不仅仅是存储它。
我怎样才能做到这一点?

最佳答案

问题是您在类bClass中使用了a指针,因为您需要定义类b。在这种情况下,只需在b.hh中包含a.hh即可解决。这个简单的解决方案将起作用,因为您只需要在类a中声明一个b指针(但不能访问它)。前向声明是不够的,因为它实际上没有告诉编译器除类b存在之外的任何内容。

哦,您需要将bClass->bString中的a::getBString更改为bClass->getString(),因为b::bString是私有的。当然,还要创建b的实际实例并将其分配给bClass

08-04 16:07