C++ C++;异常捕获延迟,这可能是什么原因?
我在C++ C++;异常捕获延迟,这可能是什么原因?,c++,class,generics,exception,operator-overloading,C++,Class,Generics,Exception,Operator Overloading,我在main.cpp中有以下代码: #include <iostream> #include "Matrix.h" int main(){ mtm::Dimensions dim_1(2,3); try{ const mtm::Matrix<int> mat_1 = mtm::Matrix<int>::Diagonal(2,1); mtm::Matrix<int> mat_2 = mtm::Matr
main.cpp
中有以下代码:
#include <iostream>
#include "Matrix.h"
int main(){
mtm::Dimensions dim_1(2,3);
try{
const mtm::Matrix<int> mat_1 = mtm::Matrix<int>::Diagonal(2,1);
mtm::Matrix<int> mat_2 = mtm::Matrix<int>::Diagonal(2,-1);
std::cout<<(-mat_2)(1,1)<<(-mat_2)(2,2)<<std::endl;
} catch(mtm::Matrix<int>::AccessIllegalElement& e){
std::cout<<e.what()<<std::endl;
}
}
它返回以下内容:(注意开头的1)
下面是我如何实现
operator语句std::cout语句std::cout,那么如果可能的话,在我的例子中应该怎么做来解决这个问题呢?也许值得指出的是,从c++17中指定了顺序,并且必须从(.matu 2)(1,1)
@smith抛出异常,你有一个选择是开始编译到C++17。那么,如果可能的话,我应该怎么做来解决这个问题呢?也许值得指出的是,从C++17中指定了顺序,并且必须从(-mat_2)(1,1)
@smith抛出异常,你有一个选择是开始编译到C++17。为什么你认为异常来得晚?这不是不能解决问题吗,但是你真的需要额外的东西吗<代码>“\n”
结束一行。为什么您认为异常延迟了?这不是不能解决问题吗,但是你真的需要额外的东西吗<代码>“\n”
结束一行。
Mtm matrix error: An attempt to access an illegal element
1Mtm matrix error: An attempt to access an illegal element
template<typename T>
std::ostream &operator<<(std::ostream &os, const Matrix<T> &matrix) {
typename Matrix<T>::const_iterator it_begin = matrix.begin();
typename Matrix<T>::const_iterator it_end = matrix.end();
return printMatrix(os, it_begin, it_end, matrix.width());
}
template<class ITERATOR_T>
std::ostream& printMatrix(std::ostream& os,ITERATOR_T begin,
ITERATOR_T end, unsigned int width){
unsigned int row_counter=0;
for (ITERATOR_T it= begin; it !=end; ++it) {
if(row_counter==width){
row_counter=0;
os<< std::endl;
}
os <<*it<<" ";
row_counter++;
}
os<< std::endl;
return os;
}