我想初始化一个对象中的成员(引用类型),指向另一个对象(不同类型)的私有成员。我使用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年的遗留代码。
耐人寻味的名称混淆... – Chowlett
@Chowlett哈哈,富酒吧巴兹是不够的时候。 –