考虑我有一个单例类Foo
。这里的问题不是关于实现单例习语的方式,那么我就不明确了。我有类似的东西:
class Foo
{
private:
Foo();
~Foo();
public:
void doSomething();
int getSomething() const;
public:
static Foo& getInstance();
};
然后,在我看来,经典的称呼方式如下:
Foo::getInstance().doSomething();
int i = Foo::getInstance().getSomething();
总是不得不写Foo::getInstance()
来访问实例并执行预期的任务是很烦人的。那么我的问题如下:作为静态函数的重复函数如何,保持单例机制,但缩短访问时间?
class Foo
{
private:
Foo();
~Foo();
public:
void doSomething();
int getSomething() const;
public:
static Foo& getInstance();
static void _doSomething() { Foo::getInstance().doSomething(); }
static int _getSomething() { return Foo::getInstance().getSomething(); }
};
然后,我可以用这个更短的版本来调用它:
Foo::_doSomething();
int i = Foo::_getSomething();
这很常见吗?是否有充分的理由不这样做(以及为什么)?还有其他(更好的)方法来简化对单例类的调用吗?
注意:出于兼容性原因,我不使用 C++11。