2014-01-18 114 views
1

我想改變類B的可變構件調用類方法中,在A級實施例 的方法構件:從另一個類

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的對象都是不可到達的一個

如果B類的對象是不是A級可達有沒有辦法可以修改它們。一旦你重構你的設計,你應該把它作爲參數傳遞給函數:

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

我希望能夠切換從類A的方法的標誌B的每一個對象

你應該在聲明的B公共flag變量作爲static

class B { 
public: 
    static int flag; 
}; 

int B::flag = 0; 

,然後從裏面A

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

我不是downvoter!問題是我需要能夠爲B的所有對象做到這一點!這意味着我應該有指向所有B對象的指針 – alex777

+0

它至少是公開的,至少.. – alex777

+0

「除非你自己註冊」,你是什麼意思? – alex777