C++プログラムでenumパラメータを取得する必要があります。これは、パラメータを介して値を返す関数を使用して取得する必要があります。私はintとして宣言することから始めましたが、コードレビューでenum(ControlSource)としてタイプするように求められました。私はこれをしましたが、Get()関数が壊れていました。-&のCスタイルのキャストが問題を解決したことに気付きましたが、最初にstatic_cast <で修正しようとしましたが、コンパイルされませんでした。static_cast <int&>を使用して整数参照パラメータをC++の関数に渡すことができないのはなぜですか?
なぜeTimeSourceがint型の場合、整数を参照渡しする必要はありませんか?
//GetCuePropertyValue signature is (int cueId, int propertyId, int& value);
ControlSource eTimeSource = ControlSource::NoSource;
pPlayback->GetCuePropertyValue(programmerIds.cueId, DEF_PLAYBACKCUEPROPERTY_DELAY_SOURCE, static_cast<int&>(eTimeSource)); //This doesn't work.
pPlayback->GetCuePropertyValue(programmerIds.cueId, DEF_PLAYBACKCUEPROPERTY_DELAY_SOURCE, (int&)(eTimeSource)); //This does work.
int nTimeSource = 0;
pPlayback->GetCuePropertyValue(blah, blah, nTimeSource); //Works, but no (int&) needed... why?
を取るために、関数のパラメータを変更するために、彼らはおそらくも意味列挙型に変数を変更するには言わなかった「作品を、ない(INT&)が必要...なぜ?」場合 - 参照渡しの変数については、C++のドキュメントを参照してください(または、http://stackoverflow.com/a/410857/1174378を参照してください) –
二重かっこを削除しました。 Cスタイルのキャストがこのオブジェクトに対してreinterpret_castを呼び出していると仮定して正しく動作しますか?もしそうなら、int型を基にしたenumについては本当に重要ですか? – Gareth
いいえ、 'reinterpret_cast'はCスタイルの" sledgehammer "キャストと同じではありません。タイプを変更した後にコードを動作させるために醜いハッキーなキャストが必要な場合は、タイプを変更しないでください!それは 'int'でうまく動作し、enumで正常に動作しません...私に答えが何であるかはかなりわかります –