gpt4 book ai didi

c++ - 我不明白为什么我声明一个空的内部结构并将其传递给构造函数

转载 作者:行者123 更新时间:2023-12-03 10:05:55 25 4
gpt4 key购买 nike

当我阅读Hypodermic的源代码时,我发现在其容器的构造函数中声明了一个空结构。我不明白它为什么这样做?

class Container : public std::enable_shared_from_this< Container >
{
private:
struct PrivateKey {};

public:
Container(const PrivateKey&,
const std::shared_ptr< IRegistrationScope >& registrationScope,
const std::shared_ptr< IRuntimeRegistrationBuilder >& runtimeRegistrationBuilder)
: m_registrationScope(registrationScope)
, m_runtimeRegistrationBuilder(runtimeRegistrationBuilder)
{
}

static std::shared_ptr<Container> create(const std::shared_ptr<IRegistrationScope>& registrationScope,
const std::shared_ptr<IRuntimeRegistrationBuilder>& runtimeRegistrationBuilder)
{
return std::make_shared<Container>(PrivateKey(), registrationScope, runtimeRegistrationBuilder);
}

// other code...
};
PrivateKey是上面代码中定义的,我不明白它解决了什么问题。它似乎没有任何作用。

最佳答案

正如@Eljay 在评论中所述,使用 std::make_shared 时必须可以访问构造函数.
这个工厂方法背后的想法是确保没有组件会获得 Container 的实例。那不是 std::shared_ptr从而强制执行 shared_from_this() 的合法性内Container方法。
如果您需要进一步解释,请随时通过 GitHub 联系我。

关于c++ - 我不明白为什么我声明一个空的内部结构并将其传递给构造函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62874034/

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