两个私有嵌套类之间的友谊

问题描述

我有4个班级,A,A1,B和B1。类A包含一个私有的嵌套类A1,而类B包含一个私有的嵌套类B1。我希望类B :: B1的构造函数可以访问类型为A :: A1的对象的私有数据成员。为此,我的解决方案是使用关键字“ friend”。但是,我很难让外部的上班族之间的友谊开始工作,而且在线指南无法说明两个嵌套的私人班级之间的友谊。

计划是让B成为A的朋友,以便B1知道A1。然后与A成为B的朋友,以便A1知道B1。然后将B1设为A1的朋友,以便B1可以访问A1的私有数据成员。这是一些无法做到这一点的代码。您可以随意忽略它。

    //A.h
    #pragma once
    #include "B.h"
    
    class A {
        friend class B;
    private:
        class A1 {
            friend class B::B1;
        private:
            int num = 3;
        };
        A::A1 a1;
    }
    //B.h
    #pragma once

    class A;
    
    class B {
        friend class A;
        //stuff
    private:
        class B1;
    public:
        B1& b; // I would prefer this to not be a reference
        B(A a); // Error: incomplete type
    };
    // B.cpp
    #include "B.h"
    #include "A.h"
    
    class B::B1{
        B::B1(A::A1 a1) {
            int num = a.num;
        };
            int num;
    };
    B::B(A a) : b(a.a1) {}

此代码似乎有很多错误,但是在我尝试使此代码起作用的所有尝试中都有许多不同类型的错误。对这些错误的解释可能会有所帮助,但是我正在寻找一个如何正确处理友谊和前向声明的可行示例。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...