我想在一个对象中初始化一个成员(引用类型)以指向另一个对象(不同类型)的私有成员。我friend
用来提供对私有成员的访问。(请耐心等待,我会进一步解释为什么我需要这样做。)
下面是我尝试开始使用的代码的最低版本,它显然不起作用。现在很明显,我只是想用这段代码初始化引用Aries a(t.Leo);
,但因为这是在内部完成的main()
,所以它不会编译。
我在这里和互联网上浏览了许多帖子(关于 和 的主题friend
)reference
,但无法找到解决问题的方法。我怎样才能使这项工作,或者我可以尝试正确绑定引用的其他方法?
class Aries;
class Taurus {
friend class Aries;
public:
void setLeo(int inLeo) {
Leo = inLeo;
}
private:
int Leo;
};
class Aries {
public:
Aries(const int& inCancer) : Cancer(inCancer) {}
private:
const int& Cancer;
};
int main() {
Taurus t;
Aries a(t.Leo); // Intention: initialize (bind) the Cancer member with t's Leo.
}
注意我知道足够多的 C++ 来理解为什么上述做法被认为是有问题的或不好的。
我正在硬件模拟环境中进行一个研究项目,其中测试台是用 C++ 编写的。该项目的目的是将类(私有)成员显示为波形。这样做的唯一可靠方法是将“波形制作器”类作为friend
测试台对象的一个,然后让它“跟踪”私有成员(通过创建一个reference
如上所述)。在测试台中提供 getter 方法的另一种选择是不切实际的,因为该项目将与价值 20 年的遗留代码一起使用。