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