0
以下两个类,我想在A的构造函数中设置b.i。我该怎么做?在施工期间设置成员的私有属性
我不能将值传递给B的构造函数,因为我只在A的构造函数内部获得值。我试图使A::A()
成为B的一个朋友函数,但这需要我包含a.hpp ,这导致了圆形包容。 我能想出的唯一解决方案是将b
的类型更改为B*
。有更好的方法吗?
A.hpp:
#include "B.hpp"
class A {
private:
B b;
public:
A();
}
B.hpp:
class B {
private:
int i;
public:
B()
}
溶液我发现
逻辑解决方案是使A B的朋友,所以它可以访问我。
我以前试过这个,但后来没有奏效。显然这是由于其他问题,或者我错误地做了,因为现在它工作。
关于标记为重复,我理解所有在那个链接,甚至曾经使用它,但我不明白这是如何帮助我解决这个问题。 – Oebele
这是关于'A类'的前向声明的必要条件,它需要在'B'中使它成为'朋友'。 –
我试着在'B'中向前声明'A',但是当我将行朋友'A :: A()'添加到'B'时,编译器仍然给出错误。这对我来说很有意义,因为编译器需要知道'A :: A()'存在,所以前向声明是不够的。 – Oebele