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

时间:2018-04-17 09:20:28

标签: c++ friend private-members

  

Header.h

array.get(index)==n
  

Source.cpp

#pragma once

namespace
{
    class B;
}

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

        public:
            friend class B;
        };
    }
}

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

1 个答案:

答案 0 :(得分:1)

你是在匿名命名空间中声明B类

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

像这样:

#pragma once

class B;


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

        public:
            friend class B;
        };
    }
}