#include <cstdio>
struct Settings
{
int i1, i2;
Settings(int i1, int i2) : i1(i1), i2(i2) {}
struct GeneralSettings
{
int gi1, gi2;
} static gs;
void do_something() const
{
printf("%d %d %d %d\n", i1, i2, gs.gi1, gs.gi2);
}
};
Settings::GeneralSettings Settings::gs;
int main()
{
Settings s1(0,1);
Settings s2(1,0);
s1.gs.gi1 = 1; // I would like to access GeneralSettings like this only!
Settings::gs.gi2 = 1; // Can i prevent global access like this?
s2.do_something();
return 0;
}
请参阅上面的代码和评论。除了使用Settings::gs
private
和accessors/mutators之外,还有其他方法可以限制对Settings::gs
的访问,因此只能通过Settings
对象访问它吗?它的方式是,任何函数都可以访问Settings::gs
,无论它是否有权访问Settings
对象。 Settings::gs
实质上是一个全局对象。如何限制对静态公众成员的访问?
什么是这样做的呢? – Holt
@Holt:避免将Settings :: GeneralSettings暴露给每个函数。 –
你已经在Settings结构中显示了一切,你为什么只关心静态成员? – zoska