2014-01-18 4 views
1

Я хочу изменить переменный член класса В, в качестве члена метод класса А. Примера:вызов метода класса из другого класса

A.h: 
class A 
{ 
    //several other things 
    void flagchange(); 
} 
A.cpp: 
void A::flagchange() 
{ 
    if (human) Bobj.flag=1; 
} 

Я знаю, что мне нужна объект класса B, изменить переменный член B, но объекты B недоступны в A. Возможно ли это указателем ??

ответ

3

но объекты B не доступны в A

Если объекты класса B не достижимы по классу А, нет никакого способа, вы можете изменить их. После того, как вы реструктурировать свой дизайн, вы должны передать его в качестве аргумента функции:

class A { 
    //several other things 
    void flagchange(B& obj) { 
     if (human) 
      obj.flag = 1; 
    } 
}; 

Я хочу, чтобы иметь возможность переключить флаг из метода класса А для каждого объекта B

Вы должны объявить flag открытую переменную как static в B:

class B { 
public: 
    static int flag; 
}; 

int B::flag = 0; 

, а затем, внутри A:

class A { 
    //several other things 
    void flagchange() { 
     if (human) 
      B::flag = 1; 
    } 
}; 
+0

Я не являюсь нисходящим! проблема в том, что мне нужно сделать это для всех pbjects B! Значит, у меня должны быть указатели на все объекты B? – alex777

+0

публично до сих пор по крайней мере .. – alex777

+0

«Если вы сами не зарегистрируете их», что вы имеете в виду? – alex777

Смежные вопросы