【问题标题】:C++ variable with same name, context : global and private,具有相同名称的 C++ 变量,上下文:全局和私有,
【发布时间】:2008-12-30 10:30:53
【问题描述】:

在下面的代码中,g++ 给出了这个错误: 1.cpp:在成员函数void W::test()': 1.cpp:6: error:int F::glob'是私有的 1.cpp:19:错误:在此上下文中

但是,不应该全局声明 在这里使用变量“glob”,而不是 的“私人”“glob”?

   #include <iostream.h>

    int glob;
    class F
    {
        int glob;
        public:
        void readIt()
        {
            cin >> glob;
        }
    };

    class W : public F
    {
        public:
            void test()
            {
                glob--;
            }
    };

    int main()
    {
    }

【问题讨论】:

    标签: c++ private global


    【解决方案1】:

    使用范围规则而不是可见性规则访问变量和函数。因为F::globW::test()范围内的glob,所以使用它。但是,W::test() 无权访问F::glob,并导致错误。编译器检查::glob,因为在“优先级”范围内有其他东西在它之前(不确定确切的术语)。

    【讨论】:

      【解决方案2】:

      private glob 会影响全局 glob,所以错误是正确的 如果您打算使用全局变量,请使用 ::glob 访问全局变量

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          【解决方案4】:

          这里将使用类成员,访问全局变量使用 :: 运算符。

          【讨论】:

            猜你喜欢
            • 2021-05-01
            • 2011-04-14
            • 2013-06-16
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2021-11-12
            • 1970-01-01
            • 2021-08-06
            相关资源
            最近更新 更多