所以我在模板类中有这个功能:
T getValue(int x, int y) const throw(logic_error, out_of_range) { // value getter
try {
if (x > rows || y > cols || x <= 0 || y <= 0)
throw out_of_range("Invalid x or y.");
else
return data[cols*(x-1)+(y-1)];
} catch (out_of_range& e) {
cerr << e.what() << endl;
}
}
如果我尝试给它一个超出范围的数字,但是输出始终为:
,则异常有效Invalid x or y.
1
我已经尝试了一个小时来弄清楚这个来自哪里,我错过了什么?它肯定与std :: out_of_range有关,但我无法确切地知道究竟是什么。
编辑关于模板矩阵:
Matrix<int> a(2, 2, 0); // creates a 2x2 matrix of all zeros
cout << a.getValue(3, 2) << endl; // prints the value at row 3, col 2, which doesn't actually exists; the output is as shown above
此外,值得注意的是
int b = a.getValue(3, 2);
给出预期的输出:
Invalid x or y.
答案 0 :(得分:0)
通过添加
解决了这个问题exit(-1);
到catch区块:
catch (out_of_range &e) {
cerr << e.what() << endl;
exit(-1);
}