从源文件中定义的 class 访问 header 中定义的 class 的私有变量

Access private variable of class defined in header from class defined in source file

Header.h

#pragma once

namespace
{
    class B;
}

namespace n1
{
    namespace n2
    {
        class A
        {
        private:
            int i;

        public:
            friend class B;
        };
    }
}

Source.cpp

#include <stdio.h>
#include "Header.h"

class B
{
public:
    void Run();
};

void B::Run()
{
    n1::n2::A a;
    a.i;
}

int main()
{
    B b;
    b.Run();
}

从上面可以看出,Class A 定义在header 文件中,而class B 定义在源文件中。我想从 Class B::run() 访问 Class A 的私有成员。我无法找到执行此操作的方法。

您正在匿名命名空间

中转发声明class B

从命名空间中取出 class B 前向声明,它应该可以工作

像这样:

#pragma once

class B;


namespace n1
{
    namespace n2
    {
        class A
        {
        private:
            int i;

        public:
            friend class B;
        };
    }
}