我得到一个 C2440('initializing' : cannot convert from 'std::_Vb_reference<_Alloc>' to 'bool &'),IntelliSense 将其转换为标题中的错误。
我明白这个错误在说什么,只是不知道为什么这么说。下面的代码会产生这个错误:
std::vector<const UINT>::iterator oIter;
oIter = std::find(vecuClassID.begin(), vecuClassID.end(), uClassID);
const UINT uDistance = std::distance(vecuClassID.begin(), oIter);
bool& refbStaticSectionInitialized = *(vecbStaticSectionInitialized.begin() + uDistance);
错误似乎发生在最后一行 - 在 Visual Studio 中,取消引用运算符带有红色下划线。这很令人困惑,因为我的代码与 CRITICAL_SECTION 执行完全相同的操作,并且不会产生错误:
std::vector<const UINT>::iterator oIter;
oIter = std::find(vecuClassID.begin(), vecuClassID.end(), uClassID);
const UINT uDistance = std::distance(vecuClassID.begin(), oIter);
CRITICAL_SECTION& refhStaticSection = *(vechStaticSection.begin() + uDistance);
它与 bool 是原始的有关吗?