我在头文件中编写了两个类,如下所示,并且两个类相互引用,并且我在A类中使用之前添加了B类,但是它有一个错误。
#ifndef TEST_H
#define TEST_H
class B;
class A {
public:
B *b;
void test() {
b = new B();
}
};
class B {
public:
A *a;
void test() {
a = new A();
}
};
#endif // TEST_H
怎么解决呢?谢谢你。
b = new B();
在这一点上,向前声明不再足够。B
为了实例化该类的实例,必须知道类的定义。
只需将这两种test
方法的定义延迟到定义了两个类为止:
class B;
class A {
public:
B *b;
void test();
};
class B {
public:
A *a;
void test();
};
inline void A::test() {
b = new B();
}
inline void B::test() {
a = new A();
}
嗯,从技术上讲,不必重新定位两个类的test()
方法的定义,但是用这种方法看起来很整洁。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句