gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:29:18 24 4
gpt4 key购买 nike

我有以下类(class):

class A {
// Whatever
};

class B {
T attribute;
A a;
};

现在假设我有以下场景:

A aX, aY;  
B bX, bY;

现在我可以将aXaY“插入”到bXbY 中。

我希望类型 A 的对象知道它们在 B 中,或者换句话说,它们的“父类(super class)”B 的“属性”是什么。

问题:

我希望能够在它们的“父类(super class)”B 之间自由移动类型 A 的对象,我需要一种方法在运行时动态地将 B 的属性 泄漏给它们,所以类型 A 的对象总是知道,它们属于什么 B(或者它们当前所在的 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;
}

更新:修复了循环指向和循环调用中的错误,它只能通过友元函数解决。

关于c++ - 将类的属性泄露给它的组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10372994/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com