gpt4 book ai didi

c++ - 我需要一些 C++ 结构建议

转载 作者:行者123 更新时间:2023-11-28 00:54:34 25 4
gpt4 key购买 nike

我有一个类 A 的实例。它有两个成员,对象 A 和对象 B。我需要创建对象 A 的一个实例(这是一个相当大的对象)和对象 B 的两个实例,然后给出对象 B 的两个实例都可以访问该对象 A。他们不需要更改对象 A,他们只需要访问其信息。

现在,我通过将对象 A 创建为指针并将其传递给对象 B 的两个实例来实现这一切,对象 B 拥有自己的指针,然后指向内存中与对象 A 的指针相同的位置。这很好用,但我认为这是一个很大的禁忌,对吧?因为一旦 A 类删除了原始指针,我就会有一些悬挂指针,对吗?有一个更好的方法吗?

(仅供引用 - 在我需要快速加载时间的程序中一次加载对象 A 需要几秒钟,这就是为什么我必须只创建一个实例并将其传递给两个对象 B 而不是让对象 B创建他们自己的对象 A 实例。)

最佳答案

如果我没听错,你想要这样的东西:

// Class for "Object A" in your question
class Foo
{
// ...
};

// Class for "Object B" in your question
class Bar
{
Foo &foo_;

public:
Bar(Foo &foo)
: foo_(foo)
{}
};

class A
{
Foo foo_;
Bar bar1_;
Bar bar2_;

public:
A()
: bar1_(foo_),
bar2_(foo_)
{}
};

不使用指针,不分配,所以没有悬挂指针/引用或内存泄漏。当 A 被销毁时,bar1_bar2_ 以及 foo_ 也会被销毁,因此 的两个实例Bar 也不会留下任何悬空引用。

关于c++ - 我需要一些 C++ 结构建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12249209/

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