从源文件中定义的类访问标头中定义的类的私有变量

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

本文关键字:定义 变量 源文件 访问      更新时间:2023-10-16

标题.h

#pragma once
namespace
{
    class B;
}
namespace n1
{
    namespace n2
    {
        class A
        {
        private:
            int i;
        public:
            friend class B;
        };
    }
}

资料来源.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();
}

从上面我们可以看到,类 A 是在头文件中定义的,而类 B 是在源文件中定义的。我想从类 B::run(( 访问类 A 的私有成员。我找不到这样做的方法。

您正在匿名命名空间中向前声明类 B

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

喜欢这个:

#pragma once
class B;

namespace n1
{
    namespace n2
    {
        class A
        {
        private:
            int i;
        public:
            friend class B;
        };
    }
}