CライブラリにC++フロントエンドを追加しています。このライブラリの1つの関数は、配列を持つハンドラーと配列のサイズを持つ整数を呼び出します。したがって、C関数を提供する必要があります。
int handler(int argc, sometype **argv);
ここで、C ++呼び出しコードが、次のような、よりC++風のハンドラー関数を提供できるようにしたいと思います。
int handler(std::vector<sometype*> args);
ハンドラータイプの変更は難しくありませんhandler
。ユーザー提供のハンドラーを呼び出す独自のハンドラーを提供する必要があります。std::vector
そのため、を作成してその内容をコピーする必要がありますargv
。
ただし、可能であれば、ポインタのリスト全体をコピーしたくはありません。残念ながら、内部配列にすでに割り当てられているメモリブロックを使用するように指示することはできないと思います。std::vector
さらに、配列は静的であるため、考慮する必要がありますconst
。
std::vector
事前に割り当てられたCスタイルの配列をより使いやすいインターフェイスでラップするために使用できるものと同様のSTLタイプはありますか?と同様に、サイズクエリと反復をサポートする必要がありますstd::vector
。
ありがとう。