静态关键字在这里有帮助吗

时间:2013-06-13 19:49:59

标签: c++ static

    class A{
    int _a;
    public:
    /--/ void setfunc(int a)        ............. will static works here
    {
      _a=a;
    }
     int getValue(){return _a};
    };

    class B{

     public:
     void func()
     {
      /--/ setfunc(1);          ...................Dont want to create object of A.
     }
    };

    class C{

     public:
       void something()
       {
        A aa;
        cout<<aa.getValue();            ............. want a value update by                      class B setfunc
       }
     };

     int main()
      {
        B bb;
        bb.func();
        C cc;
        cc.something();
      }

问题:如何在不使用该类对象的情况下在另一个函数中调用setfunc()。此外,如果它通过某类B改变设置值“_a”,那么每当我尝试通过getValue()

在其他类中检索它时,相同的值将持续存在。

1 个答案:

答案 0 :(得分:3)

在静态函数中,您只能使用类的静态成员。像这样(_a是静态的):

class A {
    static int _a;
    public:
    static void setfunc(int a)
    {
      _a=a;
    }
    static int getValue(){return _a};
};

否则,您无法对非静态成员执行任何操作:

class A {
    int _a;
    public:
    static void setfunc(int a)
    {
      _a=a; // Error!
    }
    static int getValue(){return _a}; // Error!
};