在下面的代码,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::globglob的范围W::test(),就使用它。然而,W::test()没有获得F::glob,和一个错误的结果。该编译器的的检查::glob因为别的什么preceeds它范围内“优先”(字词完全不知道)。

其他提示

私人水珠阴影全球水珠,这样的错误是正确的 使用::水珠访问全局变量如果u意图使用全局变量

您可以尝试使用::glob--;代替。这样,你告诉编译器使用全局命名空间。

类构件将在此使用,以访问全局变量的使用::运算。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top