从源文件中定义的 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;
};
}
}
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;
};
}
}