我在 C++ 程序中有一个枚举参数,我需要使用一个通过参数返回值的函数来获取该参数。我首先将其声明为 int,但在代码审查中被要求将其键入为枚举 (ControlSource)。我这样做了,但它破坏了 Get() 函数——我注意到 C 风格的转换为 int& 解决了这个问题,但是当我第一次尝试用 static_cast<> 修复它时,它没有编译。
为什么会这样,为什么当 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?