1
考虑我有一个单独的类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();
它是常见的?有没有很好的理由不这样做(以及为什么)?是否有其他(更好的)方法来简化对单例类的调用?
注:我不使用下的兼容性原因++ 11。
你有没有考虑像'汽车及实例=富::的getInstance(); instance.doSomething(); instance.getSomething();'? –
@FrançoisAndrieux:是的,当然。如果在同一个范围内多次调用单例,那么这是有效的。我想到几个范围内的电话。但这是一个很好的观点。 – Caduchon
@FrançoisAndrieux'auto'是OP所说的他不能使用的C++ 11关键字。 – muXXmit2X