2013-06-13 5 views
0
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() вызывать в другой функции без использования этого объекта класса. Кроме того, если он изменяется как значение установки «_a» через someclass B., то такое же значение будет сохраняться всякий раз, когда я пытаюсь получить его в каком-то другом классе, например C через getValue()Может ли статическое ключевое слово помогать здесь

+0

То, что вы пытаетесь не представляется возможным, потому что 'setfunc' доступ к члену переменная. Что следует делать 'setfunc', если вы не назовете его на объект' x' типа 'A'. Для чего он должен получить доступ вместо 'x._a'? –

+0

Вы должны решить, является ли _a переменной, принадлежащей каждому экземпляру класса A, или если все экземпляры будут разделять эту (статическую) переменную. – harper

ответ

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! 
}; 
Смежные вопросы