我不明白为什么我声明一个空的内部结构并将其传递给构造函数
I don't understand why I declare an empty internal structure and pass it in the constructor
当我阅读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
时,构造函数必须是可访问的。
此工厂方法背后的思想是确保没有组件将获得不是std::shared_ptr
的Container
实例,从而在Container
方法内强制执行shared_from_this()
的合法性。
如果你需要进一步的解释,请随时通过GitHub联系我。
相关文章:
- C++ 结构内部的unordered_map会导致内存泄漏问题吗?
- 在C++中更改结构内部元素的方法?
- 结构内部结构的联合 - 混合 C 和 C++
- 如果在结构内部使用condition_variable,则它不起作用
- 尝试将数据添加到结构内部的矢量时出错
- 如何使结构内部的可变参数模板可以在外部访问?
- 结构内部的结构:"对非静态成员的非法引用"错误
- C 是什么是在结构内部洗牌的最有效方法
- C :结构内部的Armadillo矩阵
- 使用包含该结构内部结构的 using 定义
- 初始化指向另一个结构内部结构的指针
- 更改结构C 内部阵列的大小
- 如何与CUDA中的结构内部结构一起工作
- 如何在C++中访问数组结构内部的数组结构
- 另一个结构内部的结构数组的成员变量没有通过引用传递
- 结构内部的C++数组,如何处理它们
- 从构造函数中本地声明的device_vector使用device_vector::data()方法初始化结构内部的指针是
- 使用constexpr方法在结构内部进行模板参数化
- 访问结构内部的矢量size_type
- CPP 结构内部重载 () 运算符