0

こんなことしたい

function A(){
    session database_handler(....);

    result res = database_handler << "SELECT ....";

    functionB(res);
}

functionBのパラメーターはどうあるべきですか?

例のように、ポインタとして渡すことも機能しません。

ありがとう

4

2 に答える 2

1

安全にコピーできますcppdb::resultが、1つの場所でのみ繰り返すことができます。つまりcppdb::result、結果オブジェクトへの参照(カウント)を保持しているため、行を反復処理する場合、行を反復処理するfunctionBことはできません。functionA

したがって、安全に定義できます

void functionB(cppdb::result res);

ただし、反復に関しては、

void functionB(cppdb::result &res);

また、最後の1つは、参照カウントのオーバーヘッドを伴わないため、より高速です。

于 2013-02-06T12:15:10.370 に答える
0

簡単な方法の1つは、結果セットに似た構造を作成することです。その構造体にデータを入力し、構造体ポインタを関数に渡します。

もう1つの方法は、関数をfunctionB(result res)として宣言することです。つまり、result型のパラメーターを受け入れ、「res」からクエリ結果を抽出します。

于 2013-02-06T05:33:40.917 に答える