我有一個類有兩個函數foo1和foo2,必須按順序調用:foo1,foo2。如何強制按順序調用幾個函數?
如何強制用戶每次調用foo2時調用foo1?
是否有可能在編譯時檢查這個序列?
的背景是這樣的:我正在開發一個日誌系統基於流,就像COUT,CERR,等等:
trace << "This is a log text followed by a number " << 5 << endl;
我需要的是強制用戶調用ENDL每次他呼叫跟蹤。 endl必須在另一個電話號碼跟蹤之前被呼叫。
爲什麼?
- 當用戶調用endl時,日誌系統必須刷新。每條消息都必須儘快刷新。
- 日誌也同步,以避免消息重疊。所以我鎖定了跟蹤調用中的互斥量,並在endl調用中解鎖了它。
這些都是限制我:
- 必須儘可能的簡單,就像COUT
- 我與Visual Studio 2010的工作,這樣我就可以不使用C + +11。
- 我不能使用boost庫,因爲我在一個實時環境中工作,而我的老闆想要避免它。
- 我處於實時環境(RTX)中,我們不想動態分配內存。
在調用foo1()和foo2()的接口中沒有隻有foo()的原因是什麼? – Pixelchemist
爲什麼不將'foo1'和'foo2'設爲私有,所以用戶不能手動調用它們,然後添加一個公共函數'foo'來調用它們? – Andrew
你有看「門面」設計模式嗎? –