在下面的代码中,g ++给出了这个错误:1.cpp:在成员函数中,void W::test()':
1.cpp:6: error:
int F :: glob'是private 1.cpp:19:error:在这个上下文中
但是,不应该在这里使用全局声明的变量'glob',而不是"私有""glob"吗?
#includeint glob; class F { int glob; public: void readIt() { cin >> glob; } }; class W : public F { public: void test() { glob--; } }; int main() { }
strager.. 10
使用范围规则访问变量和函数,而不是可见性规则.因为F::glob
是glob
在范围内W::test()
,所以使用它.但是,W::test()
没有访问权限F::glob
,并且会出现错误结果.编译器并没有检查::glob
,因为别的preceeds它范围内"优先级"(不知道的确切期限).
使用范围规则访问变量和函数,而不是可见性规则.因为F::glob
是glob
在范围内W::test()
,所以使用它.但是,W::test()
没有访问权限F::glob
,并且会出现错误结果.编译器并没有检查::glob
,因为别的preceeds它范围内"优先级"(不知道的确切期限).
private glob会影响全局glob,所以错误是正确的使用:: glob来访问全局变量,如果你打算使用全局变量