gpt4 book ai didi

c++ - 从子类中调用类函数

转载 作者:行者123 更新时间:2023-11-30 02:07:32 24 4
gpt4 key购买 nike

假设类 B 的对象是类 A 的成员。

class B{
//Definitions
}

class A{
public:
A();
B b_child;
int some_function();
}

B 中定义的函数之一需要调用其所有者(父级?)A 的(公共(public))函数。有立即执行此操作的方法吗?

到目前为止,我设法做到这一点的唯一方法是在类的定义之外实现它:

A a_obj;
a_obj.b_child.setowner(&aobj);

它告诉 b_child 谁是它的所有者。我不喜欢这个。我宁愿为 b_child 使用一些内置方法来访问其父级(如果可能)。如果那不可能,我宁愿在 B 的构造函数中直接传递所有者的地址,但我不知道如何在其定义中引用 A 的地址.

最佳答案

没有内置方法可以获取变量的“所有者”,无论那是什么意思。您设置所有者的方法是正确的。此外,在B的构造中这样做也是一个正确的决定。示例代码:

class B
{
public:
explicit B( A* owner ) : _owner( owner ) {}

...
private:
A* _owner;
};

class A
{
public:
A() : _child( this ) {}

...
private:
B _child;
};

请注意,某些编译器可能会警告您在该上下文中使用 this,但对于当前示例来说是可以的。只需确保您没有从 B 构造函数中调用任何 A 成员函数,因为您获得的指针在该阶段仍指向未构造的对象。

关于c++ - 从子类中调用类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7762873/

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