【发布时间】:2020-03-11 09:34:12
【问题描述】:
嗯,当我输入大小 3 时,我有一些警告会导致我的程序崩溃。
并非所有控制路径都返回值。
我正在尝试解决 N 矩阵、输入、输出和一些操作。我存储第一列
_vec[0:size-1],last column _vec[size : (size*2)-1]
和对角线
_vec[size*2 : size*3-2]
1-dimensional 数组中的矩阵。数组大小为matrix * 3 -2。当我重载 () 运算符时会出现问题:
int _size = (_vec.size() +2) /3;
// when I switch from vector size to normal matrix size. f.e vector size: 7,
// my matrix size is 3.
int Matrix::operator()(int i, int j) const
{
int _size = (_vec.size() +2) /3;
if ((i >= _size || i < 0) || (j >= _size || j < 0)) throw OVERINDEXED;
if (i != j && j != 0 && j != _size - 1) return 0;
else {
if (j == 0)
{
return _vec[i];
}
else if (j == _size - 1)
{
return _vec[_size + i];
}
else if (i == j && j != 0 && j != _size - 1)
{
return _vec[(_size * 2) + i];
}
}
}
int& Matrix::operator()(int i, int j)
{
int _size = (_vec.size() +2) /3;
if ((i >= _size || i < 0) || (j >= _size || j < 0)) throw OVERINDEXED;
if (i != j && j != 0 && j != _size - 1) throw NULLPART;
else {
if (j == 0)
{
return _vec[i];
}
else if (j == _size - 1)
{
return _vec[_size + i];
}
else if (i == j && j != 0 && j != _size - 1)
{
return _vec[(_size * 2) + i];
}
}
}
【问题讨论】:
-
函数结束也返回
-
但我处理了所有案件。哪个控制路径不返回值?你能找到一个吗?
-
将
else if (i == j && j != 0 && j != _size - 1)替换为else。 -
@HolyBlackCat 哦,是的,你是对的。谢谢
标签: c++ matrix vector warnings