【发布时间】:2020-06-14 12:28:31
【问题描述】:
以下代码无法按预期工作:
template<class T>
bool any(const Matrix<T> &matrix) {
int matrix_height = matrix.height();
int matrix_width = matrix.width();
for (int i = 0; i < matrix_height; i++) {
for (int j = 0; j < matrix_width; j++) {
if (matrix(i, j) == true) {
return true;
}
}
}
return false;
}
对于像 {-1,0,0,0} 这样的矩阵,有一个成员 -1 为真,因此它应该返回真,但它返回假。我是否以错误的方式将 T 值转换为布尔值?
【问题讨论】:
-
为什么不直接做
if (matrix(i, j) != T{})? -
什么是 T{}?你能解释一下吗
-
为什么不直接做
if (matrix(i, j))? -
@smith 它默认构造一个
T类型的对象。 -
因为
true是true == true,而false是false == true。
标签: c++ class generics type-conversion