gpt4 book ai didi

c++ - 将 `this` 传递给子对象

转载 作者:行者123 更新时间:2023-11-30 03:13:28 24 4
gpt4 key购买 nike

在使用 C++17 时,这种将 this 传递和存储到子对象的方法是否仍然被认为是“可接受的”,或者是否有更合适的方法,在符合语言和标准?

我特别询问有关将 Parent 对象作为普通指针传递和存储的问题。

class Child
{
public:
void SetParent(Parent* p)
{
_parent = p;
}
private:
Parent* _parent;
};

class Parent
{
public:
void MyMethod()
{
Child c;
c.SetParent(this);
}
};

最佳答案

C++11 之后你可以使用 std::weak_ptr<Parent> ,假设您使用的是 std::shared_ptr<Parent> (并继承自 std::enable_shared_from_this,以便在内部生成 std::shared_ptrstd::weak_ptr)。

除此之外,是的,使用原始指针来表示缺乏所有权或反向指针仍然是可以接受的(直到委员会添加某种 std::owned_ptr<T>/std::ptr_view<T> 类)。

关于c++ - 将 `this` 传递给子对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58673324/

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