0

外部ライブラリを使用しており、次の関数を持つ別のクラスから継承するクラスがあります

void IOCallback::Open(const char* filename, bool isOpen)

bool を変更する必要があり、参照のように使用するようにコードを変更することはできません。

とにかく私はこれを達成することができますか?

4

1 に答える 1

4

bool を変更する必要があり、参照のように使用するようにコードを変更することはできません。

このようなことを意味する場合...

bool b = false;
IOCallback callback;
callback.Open(filepath, b);
if(b) {  // <- will never actually evaluate to anything but false
    // do something
}

...では、まあ、できません。関数は引数のコピーを受け取ります。関数内から引数を自由に変更できますが、呼び出し元がその変更を確認できるような方法で変更することはできません。

この要求の背後にある理由に疑問を呈します。コードを作成した場合は、それを変更するか、オーバーロードされた別のバージョンを追加して、必要なことを行うことができます。あなたがコードを書いておらず、それを変更できない場合、そもそもその引数を変更することを意図したものではありませんでした。

于 2012-10-04T19:40:33.760 に答える