【发布时间】:2021-10-21 04:37:44
【问题描述】:
我正在尝试实现一个在内部使用 meyers 单例的单例模板:
#include <bits/stdc++.h>
template <typename T>
class Singleton {
public:
static T& instance() {
static T _instance;
return _instance;
}
protected:
Singleton() = default;
~Singleton() = default;
Singleton(const Singleton & s) = delete;
Singleton& operator=(const Singleton & s) = delete;
};
class Foo : Singleton<Foo> {
public:
void print() {
std::cout<<"from the foo singleton count : " <<count++<<std::endl;
}
private:
int count = 0;
};
int main () {
Singleton<Foo>::instance().print();
Singleton<Foo>::instance().print();
Singleton<Foo>::instance().print();
return 0;
它似乎工作:link
但现在我希望能够像这样使用它:
Foo::instance().print();
有什么办法吗?
【问题讨论】:
-
#include
从不使用它。 stackoverflow.com/questions/31816095/… -
我认为你需要 `class Foo : PUBLIC Singleton
' -
顺便说一句,
Foo不是真正的单身人士。Foo默认可在任何范围内构造。
标签: c++ templates design-patterns singleton crtp