2

現在、私はC++でアプリケーションに取り組んでいます。可能な限りパラメータにconstを使用することを意味し、そのようなもの。ただし、このC ++アプリケーションは、constをあまり使用しないCライブラリを使用します。私が遭遇している問題は、Cライブラリ内の関数にパラメーターを送信するときに、パラメーターをconstにできないため、キャストを強制されることです。

const castを使用すると、私が取り組んできたconstの正確性全体が損なわれます。constが正しくないCライブラリを操作する場合、これらのライブラリを簡単に使用するために、フローをそのまま使用し、constの正確さも使用しませんか?それとも私が見ないより良い方法はありますか?これはかなり小さなプログラムであるため、ライブラリを使用する部分を分離し、その部分だけを正しくないようにすることは、実際にはオプションではないことに注意してください。

4

1 に答える 1

4

個人的には、ライブラリの境界でconstが正しくないキャストを使用することを好みます。このアプローチの利点は、コードでconstを適切に使用するメリットを享受できることです。欠点は、ライブラリがconstをキャストしたオブジェクトを「一時的に」変更した場合でも、プログラムに障害が発生する可能性があることです。

たとえば、char *論理的に変更されないパラメータを受け取るCライブラリを見てきました。ただし、それらのパーサーは、文字列内の区切り文字を一時的にゼロに置き換えて、strcpyそれらを抽出するために使用する場合があります。constをキャストしてC++関数がを取得できるようにしconst char *、誰かが実際にconstであるオブジェクトへのポインターを渡すと、区切り文字をゼロに「一時的に」置き換えると障害が発生します。

于 2013-01-05T02:59:37.540 に答える