- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 C++ 中,我通常会以以下方式实现单例:
class singleton
{
public:
static singleton& get_instance();
private:
singleton(){};
singleton(singleton const&);
singleton operator=(singleton const&);
}
get_instance
private 并将相关的内部类声明为友元,但这将允许在库代码本身中违反单例原则,因为从它的角度来看,实例化将不再受到限制。有没有什么聪明的方法可以满足只能从代码库的一部分访问的单例的要求?
最佳答案
我有一个解决方案,但我不确定它是否是最好的解决方案,甚至对你来说是否可行。
许多问题可以通过一个额外的层来解决,这就是我在这里提出的:你可以使用 opaque pointer (又名 pimpl idiom)到你的单例,所以这个额外的层是单例的公共(public)接口(interface),是单例的唯一 friend ,因此可以违反,但它是一个与单例一起工作的简单类。
opaque 指针复制所有公共(public)函数,这些函数由 opaque 指针的 friend 库类调用。这些函数只是通过 get_access() 调用转发给单例。
这样,没有用户代码可以访问不透明指针或单例,库类使用不透明指针,即使它们是不透明指针的 friend ,他们也不能使用 that 来访问单例并且不透明指针可能违反单例原理,但实际上它是一个与单例密切合作的小类。
对于库类来说,它看起来不适用于单例,而是使用一个它们都可以单独实例化并在其上调用函数的类。
关于C++ - 一个 "private"单例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61796073/
我最近购买了《C 编程语言》并尝试了 Ex 1-8这是代码 #include #include #include /* * */ int main() { int nl,nt,nb;
早上好!我有一个变量“var”,可能为 0。我检查该变量是否为空,如果不是,我将该变量保存在 php session 中,然后调用另一个页面。在这个新页面中,我检查我创建的 session 是否为空,
我正在努力完成 Learn Python the Hard Way ex.25,但我无法理解某些事情。这是脚本: def break_words(stuff): """this functio
我是一名优秀的程序员,十分优秀!