こんなことしたい
function A(){
session database_handler(....);
result res = database_handler << "SELECT ....";
functionB(res);
}
functionBのパラメーターはどうあるべきですか?
例のように、ポインタとして渡すことも機能しません。
ありがとう
安全にコピーできますcppdb::result
が、1つの場所でのみ繰り返すことができます。つまりcppdb::result
、結果オブジェクトへの参照(カウント)を保持しているため、行を反復処理する場合、行を反復処理するfunctionB
ことはできません。functionA
したがって、安全に定義できます
void functionB(cppdb::result res);
ただし、反復に関しては、
void functionB(cppdb::result &res);
また、最後の1つは、参照カウントのオーバーヘッドを伴わないため、より高速です。
簡単な方法の1つは、結果セットに似た構造を作成することです。その構造体にデータを入力し、構造体ポインタを関数に渡します。
もう1つの方法は、関数をfunctionB(result res)として宣言することです。つまり、result型のパラメーターを受け入れ、「res」からクエリ結果を抽出します。