我正在做一个小程序,只是为了玩课。
我上了两堂课,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
。