在下面的代码中,g++ 给出了这个错误:
1.cpp: 在成员函数void W::test()'中:
1.cpp:6: 错误:
int F::glob' 是私有(private)的
1.cpp:19: 错误:在此上下文中
但是,不应该全局声明 此处使用变量“glob”代替 “私有(private)”“全局”的?
#include <iostream.h>
int glob;
class F
{
int glob;
public:
void readIt()
{
cin >> glob;
}
};
class W : public F
{
public:
void test()
{
glob--;
}
};
int main()
{
}
最佳答案
使用范围规则而不是可见性规则访问变量和函数。因为 F::glob
是 W::test()
范围内的 glob
,所以使用它。但是,W::test()
没有访问 F::glob
的权限,因此会出现错误。编译器不检查::glob
,因为在“优先级”范围内有其他东西在它之前(不确定确切的术语)。
关于具有相同名称的 C++ 变量,上下文 : global and private,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/399942/