题
在下面的代码,G ++给出了这样的错误:
1.cpp:在成员函数void W::test()':
1.cpp:6: error:
int˚F::水珠”是私人
1.cpp:19:错误:这个上下文中
但是,不应该在全局声明 变量“水珠”用在这里,而不是 了 “私人”, “水珠”?
的 #include <iostream.h>
int glob;
class F
{
int glob;
public:
void readIt()
{
cin >> glob;
}
};
class W : public F
{
public:
void test()
{
glob--;
}
};
int main()
{
}
解决方案
变量和函数使用范围规则,不visbility规则访问。因为F::glob
是glob
的范围W::test()
,就使用它。然而,W::test()
没有获得F::glob
,和一个错误的结果。该编译器的不的检查::glob
因为别的什么preceeds它范围内“优先”(字词完全不知道)。
其他提示
私人水珠阴影全球水珠,这样的错误是正确的 使用::水珠访问全局变量如果u意图使用全局变量
您可以尝试使用::glob--;
代替。这样,你告诉编译器使用全局命名空间。
类构件将在此使用,以访问全局变量的使用::运算。
不隶属于 StackOverflow