2012-07-01 53 views
0

我有很多的功能(它實際上是一個API),它是這樣的一個列表:傳遞的參數(C++)

void func1(const funcData1& data, ...); 
void func2(const funcData2& data, ...); 

其中funcData1funcData2等僅用於用於將參數列表傳遞給該函數。每次添加新功能時,都會添加新的funcData89。恕我直言,這不是最好的解決方案。所以我正在尋找一種更通用的方式來傳遞它們。有任何想法嗎?

謝謝!

+0

它是什麼,要達到什麼目的? – Kos

+0

@ user696807爲什麼它不是最好的解決方案?目前的解決方案中有什麼困擾你? –

+0

我無法重寫現有的API。但是,也許我可以放棄永無止境的新funcData655。另外,有時會將新成員添加到funcData341。這意味着編輯類的.h和.cpp ...添加一個setter和一個getter,只是爲了'發揮不錯',並將其稱爲面向對象...有時這些東西被包裝在另一層中,沒有用的setters和吸氣劑,對於一些更高級別的通用...底線:這是一些在我的工作場所使用的慣例,沒有明確的理由。 – user696807

回答

2

您可以考慮可變參數或傳遞的參數作爲一個集合:

void func (const funcData1& data, const std::list<Arg>& args); 
+0

std :: list只包含單一類型的參數。我有幾種類型。我其實想到了各種各樣的funcs。它會起作用,但可能會令人困惑。例如,當嘗試傳遞不合適的參數時,它不會拋出編譯錯誤。但這是一個折衷。 – user696807