2010-08-26 76 views
2

在我目前的項目中,有一些正在被使用的可變參數函數(省略號)。我必須對項目進行一些有影響的改變,所以我想我也可以擺脫這些變數。C++ variadic函數:什麼是最好的替代方法?

我現在的問題是,如果傳遞給它們的參數數量太多以致於創建超載會很愚蠢,那麼如何最好地替代這些參數?

我聽說過可變參數模板,但它們是不錯的替代品嗎?

我的項目中使用的大多數變量都是圍繞sprintf或一些這樣的函數。

+0

有什麼特別的原因?變量函數有一個目的...(知道你不喜歡它們會有助於形成替換它們的方法) – 2010-08-26 14:10:20

回答

0
  • 採取一種像iostreams一樣的操作符/函數來添加一個項目的方法。
  • 接受一個項目的向量(如果它們只是相同的類型)。
  • 創建一個包裝所需參數信息的類,並只傳遞該類的一個實例(如果需要,它可能具有多個屬性,每個屬性的長度可能會有所不同)。
4

根據變量的根深蒂固,你可能會處於成本/效益比例的損失端。大型項目的維護始終是在代碼存在之間以及您所知道的更好之間進行平衡的行爲。確保你付出的努力給結果帶來真正的價值。

所以有這樣的警告。既然你提到你的函數是圍繞sprintf構建的,你可以看看C++流類。您可以考慮std::ostringstream作爲sprintf的替代品。像that provided by Boost這樣的詞彙表也可能有所幫助。

+1

boost :: format也可能有用 – 2010-08-26 14:28:13

相關問題