gpt4 book ai didi

c++ - 将 unique_ptr 用于所有权,否则使用原始指针?

转载 作者:可可西里 更新时间:2023-11-01 17:41:59 32 4
gpt4 key购买 nike

我正在使用 C++11 编写一些代码。我有

class X { /* */ };

class A {
std::vector<X*> va_x;
};

class B {
std::vector<X*> vb_x;
std::vector<A> vb_a;
};

我的类 A 中“va_x”的 X* 指向的对象也被我的类 B 中的“vb_x”的 X* 指向。

现在我想使用智能指针。对我来说,很明显 B 类拥有 X* 指向的对象的所有权(特别是因为我的 A 实例属于 B)

所以我应该为 B 中的 X 使用 unique_ptr:

class B {
std::vector<unique_ptr<X>> vb_x;
std::vector<A> vb_a;
};

我的问题是,我应该为 A 类做什么?我应该保留原始指针吗?通过这样做,在我的单元测试中,我必须承认它会导致尴尬的事情(imo),例如(不要担心封装,这不是重点):

unique_ptr<X> x(new X());
A a;
a.va_x.push_back(&(*x)); //awkward, but what else can I do?

A.vb_a.push_back(a); //ok
B.vb_x.push_back(move(x)); //ok

最佳答案

您可以使用 x.get(),它将返回内部指针。

除此之外,是的,使用原始指针来处理非拥有引用是可行的方法,另请参见 this question .

关于c++ - 将 unique_ptr 用于所有权,否则使用原始指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12555441/

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