【发布时间】:2016-09-17 14:30:55
【问题描述】:
我正在尝试实现一个通用矩阵,但在我的代码中每次声明 domain_error 时都会出现错误。
错误:
Matrix.h:31:60: error: 'domain_error' in namespace 'std' does not name a type
Matrix operator+(const Matrix &other) const throw(std::domain_error);
Matrix<T> Matrix<T>::operator+(const Matrix &other) const throw(std::domain_error)
^
Matrix.hpp:94:27: error: 'domain_error' in namespace 'std' does not name a type
} catch (std::domain_error e)
^
Matrix.hpp:96:23: error: 'e' was not declared in this scope
throw e;
^
例如运算符'+':
矩阵.h:
#include <exception>
#include <vector>
#include <iostream>
#include <cstdlib>
typedef typename std::vector<T> genericVector;
Matrix operator+(const Matrix &other) const throw(std::domain_error);
Matrix.hpp:
template<class T>
Matrix<T> Matrix<T>::operator+(const Matrix &other) const throw(std::domain_error)
{
if (!compareSize(*this, other)) // check if matricies have the same dimensions
{
throw std::domain_error(
"illegal use of operator '+' on matrices with different dimensions.");
}
genericVector temp; // initialize a new vector<T>
for (unsigned int i = 0; i < _rows; ++i)
{
for (unsigned int j = 0; j < _cols; ++j)
{
try
{
temp.push_back(_cells[_cols * i + j] + other(i, j)); // sum matricies to vector
} catch (std::domain_error e) // if thrown domain error..
{
throw e;
}
}
}
return Matrix(_rows, _cols, temp); // return the sum of matrices
}
我还包括..
谢谢大家!
【问题讨论】:
-
#include
-
注意:抛出异常规范已弃用:stackoverflow.com/questions/13841559/…
标签: c++ exception matrix operator-overloading generic-programming