私は古典的な C を使用してこのクラスの割り当てを行っていますが、可変引数のカウントと型を取るコールバック関数に関するこの問題に悩まされています。
基本的に、私はハッシュ ツリー (各ノードがハッシュ ツリーであるツリー) に取り組んでおり、さまざまな目的で複数回使用される特定のトラバーサル戦略があるため、それを として実装しましht_walk(HashTree tree, (*callback)(Element e))
た。コールバックとして呼び出される関数は、必要に応じて要素を処理します。
問題は、私の問題のほとんどの状況で、コールバック関数が異なる引数を取る必要があることです。「可変引数」関数 (stdarg、printf-way を使用) を使用して可変引数リストを持つ関数を設計する方法は知っていますが、これらの引数をコールバック関数に「再渡す」方法はわかりません。
具体例を挙げましょう。 というコールバック関数がaddToList(Element e, List list)
あり、 ht_walk 宣言が になったとしますht_walk(HashTree tree, (*callback)(Element e), ...)
。次のスニペットのように ht_walk を使用したいとします。
HashTree my_tree = ht_create();
/* run some algorithm that populates the tree somehow */
List my_list = list_create();
ht_walk(my_tree, addToList, my_list);
これを行う方法はありますか?前もって感謝します!