尝试/捕获块上的 G++ 错误为异常
g++ errors on try/catch block for exception
Code 在 VS 和 Xcode 上编译得很好,但 g++ 当然不喜欢它。我已经盯着这个几个小时了,只是在下水道里盘旋。这其中有善业!:)
这是我正在使用的 g++ 版本:
[...]$ g++ --version
g++ (GCC) 4.1.2 20080704 (Red Hat 4.1.2-54)
这是代码:
Item* Library::findItem(unsigned int hash) {
//retrieve reference to Items::AllItems
std::map<unsigned int, Item*>& allItems = MyItems.getItems();
Item* item = NULL;
try {
item = allItems.at(hash);
}
//LINE 74 BELOW: the catch line
catch (const std::out_of_range& e) {
return NULL;
}
return item;
}
这是错误:
library.cpp: In member function ‘Item* Library::findItem(unsigned int)’:
library.cpp:74: error: expected `(' before ‘{’ token
library.cpp:74: error: expected type-specifier before ‘{’ token
library.cpp:74: error: expected `)' before ‘{’ token
这将产生相同的错误,而无需包含:
//#include <stdexcept>
int main(int argc, char* argv[]) {
try {}
catch(const std::out_of_range&) {}
}
g++ 4.7.2
我会把我的评论变成一个答案。我想 GCC 实际上是在抱怨使用std::map::at
,这是在 C++11 中引入的,因此不受 2007 年发布的 GCC 4.1.2 的支持。我会像这样重写代码:
Item* Library::findItem(unsigned int hash) {
std::map<unsigned int, Item*>& allItems = MyItems.getItems();
const std::map<unsigned int, Item*>::iterator it = allItems.find(hash);
if (it == allItems.end())
return NULL;
return it->second;
}
相关文章:
- 警告处理为错误这里有什么问题
- "error: no matching function for call to"构造函数错误
- boost::进程间消息队列引发错误
- C++,OpenCV,尝试显示图像时"OpenCV(4.3.0) Error: Assertion failed (size.width>0 && size.height>0)"此错误
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- QT在错误的班级中寻找空位
- vector.resize()中的分配错误
- 代码在main()中运行,但在函数中出现错误
- 释放错误后堆使用
- (C++)分析树以计算返回错误值的简单算术表达式
- Project Euler问题4的错误解决方案
- 我的字符计数代码计算错误.为什么
- 从"int*"强制转换为"unsigned int"会丢失精度错误
- 尝试导入pybind-opencv模块时出现libgtk错误
- CMake项目Boost库错误:Boost/config/compiler/gcc.hpp:165:10:致命错误:cs
- 在某些循环内使用vector.push_back时出现分段错误
- MSVC多行宏编译器错误
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 为什么在运行时没有向我们提供有关分段错误的更多信息?
- 错误:未在此范围内声明'reverse'