3

クラスのメンバー変数であるQSqlQueryへのQScopedPointerがあります。

constであるメソッドでQSqlQueryを初期化し、準備し、実行したいと思います。メソッドの恒常性は私にそれをさせません。2つのオプションがあります。メソッドからconstを削除するか、メンバー変数に変更可能なキーワードを追加します。どちらが良いのか、そしてその理由は?

メソッド/オブジェクトの「論理的恒常性」が変数の変更によって影響を受けない場合にのみ、可変を使用する必要があることを読みました。論理的恒常性とは何ですか?私の場合は変更されますか?

4

1 に答える 1

0

それは本当にあなたのクラスの残りの部分に依存します。QSqlQueryでクエリを準備することにより、データメンバーの1つの状態を変更します。そのため、この方法は純粋に「定数」ではありません。

決定を下す必要があるのは、クラスの残りの部分がQSqlQueryメンバーとどのように相互作用するかです。クエリの状態がオブジェクトの状態と無関係である場合、つまり、QSqlQueryデータメンバーで準備されたクエリが変更されたかどうかを他のメソッドが気にすることはありません。メンバーを変更可能にすることは適切なオプションです。準備されたクエリを変更することが他の場所に影響を与える場合は、メソッドをconstにしないでください。

于 2012-04-10T12:16:14.523 に答える