我从boost :: unordered_map库(v1.45.0)中得到了奇怪的行为。Boost unordered_map - 错误或不正确的用法?
在我的班级我创建一个对象:
boost::unordered_map<uint16, MyStruct *> bufferStructMap;
然后我初始化它在构造函数初始化列表:
MyClass::MyClass() : bufferStructMap() { .... }
然后我尝试使用方法“at拉出来的东西它“(参见API中的链接):
const uint16 bufferNumber = 1;
try {
MyStruct * ptr = (this->bufferStructMap.at(bufferNumber));
}
catch (std::out_of_range & e){
//deal with exception
}
当地图为空时,ap折叠放弃与调用“bufferStructMap.at(...)”,即使API说唯一可以抛出的异常是一个std :: out_of_range。
任何人都可以检测到我的代码有问题,或者这是一个提升错误?
谢谢!
你知道你实际得到什么类型的异常吗?偶然得到了“bad_cast”吗? – 2011-05-25 15:06:18
为什么static_cast? – 2011-05-25 15:13:13
@尼尔:我想案子是没有必要的,我只是为了确保我确定的类型是正确的。但我肯定可以删除它。好的,删除了演员。问题仍然存在.. – 2011-05-25 15:15:04