2014-01-18 69 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