c – 将类的属性泄露给它的组件

我有以下课程:

class A {
    // Whatever
};

class B {
    T attribute;
    A a;
};

现在假设我有以下情况:

A aX, aY;  
B bX, bY;  

现在我可以将aX或aY“插入”到bX或bY中.

我希望A类型的对象知道它们所处的B,或者换句话说,它们的“超类”B的“属性”是什么.

题:

我希望能够在它们的“超类”B之间*移动类型A的对象,我需要一种在运行时动态地将B的属性泄漏给它们的方法,因此类型A的对象总是知道它们属于哪个B to(或者他们目前所处的B的属性是什么).

最好的方法是什么?

解决方法:

也许这很有用(从所有者到属性的指针,反之亦然):

class A;

class B {
    T attribute;
    A* a;
public:
   void setA(A* newA);
   T getAttribute() {return attribute;}
   void setAttribute() {/*some code*/}
};

class A {
   B* Owner;
   friend void B::setA(A* newA);
public:
    void setOwner(B* newOwner) {
        newOwner->setA(this);
    }
};

void B::setA(A* newA)
{
    A* tempA = this->a;
    B* tempB = newA->Owner;

    tempA->Owner = NULL;
    tempB->a = NULL;

    this->a = newA;
    newA->Owner = this;
}

更新:修复了循环定位和循环调用中的错误,只能通过友元函数解决.

上一篇:在python中编写函数


下一篇:java – 组合和泛型