2013-07-15 32 views
0

我上一個大的代碼庫中創建一個測試類,爲此工作模板專業化,我創建像一個類中的下列:遞歸式

template <class T> class stats:public singleton<stats<T> >{...}; 

單例類的定義,你會期望從以上,並不是我控制的班級。因爲我只想每個類型的一個統計實例我收集統計數據應該是一個單身人士,並在我們的代碼基礎,我們禁止自定義單身人士班(否則我會實現我自己的單身接口,從而防止我面臨的問題) 問題是,我想的工具單身一樣,所以會發生以下情況:

someTooledClass(); 
-> stats<someTooledClass> 
-> singleton<stats<someTooledClass> > 
-> stats<singleton<stats<someTooledClass> > > 
etc. 

我的問題是,我可以專注stats<singleton<T> >?由於T是未知的,我不確定這將如何工作。 理想情況下,我不想stats<singleton<stats<T> > >永遠存在,但我想要的所有其他stats<singleton<T> >。 我之前從未真正做過這樣的事情......所以我有點困惑。

編輯: 我想我會把這裏出於能見度的原因。 工具singleton是可能的,因爲我是全局覆蓋新和刪除到我自己定製的所有類的構建,因爲單身在構建路徑(事實上它必須是)我可以用這種方式工具。 爲了背景,我得到的任務是創建一個內存管理器,所以我知道我正在與什麼(我認爲...但這是一個單獨的問題無論如何)。但現在我正試圖收集所有當前使用的內存分配的統計信息,這些內存分配按類型而不是按大小分類。

+0

「'singleton' ...不是類我控制了」...「我也想單獨工具」。聽起來像是一個衝突的要求。 –

+0

你在哪裏添加允許你「單身工具」的代碼? – jxh

+0

我是壓倒一切的全球新的,如果需要的話,然後返回他們要求的價值,這將創造統計的實例 – Robopanda333

回答

1

你試過了嗎?

請注意,您不能使該類不存在,但是您可以使其不能從singleton繼承,以便打破該鏈。

template <class T> 
class stats<singleton<stats<T> > > {}; 
+0

我知道,我有一個神話般的方式打破了(我有一個全球重新定義新的,那個消息我的班級...好吧!) 我不知道我可以改變一個特定專業的類定義,但說得通。我會試試看看會發生什麼。正如你所說, – Robopanda333

+0

並不完全是我想要的。但它確實解決了這個問題。 – Robopanda333