c++ - EXPECT_THROW - 实际 : it throws a different type, 谷歌测试

标签 c++ c++11 matrix googletest throw

大家好,我有这个构造函数

Matrix::Matrix(size_t row, size_t col)
{
  if(row < 1 || col < 1)
    throw new std::runtime_error("Minimalni velikost matice je 1x1");
  matrix = std::vector<std::vector< double > >(row,std::vector<double>(col, 0));
}

和这个测试

Matrix *TestedMatrix;
EXPECT_THROW(TestedMatrix = new Matrix(-2,3),std::runtime_error );

但我仍然得到不同类型的豁免。我也试过 std::runtime_error* 但结果是一样的。一开始我想使用 EXPECT_ANY_THROW,但它没有显示在我的代码覆盖率中。感谢帮助 ! :)

最佳答案

不要调用new

Matrix::Matrix(size_t row, size_t col)
{
  if(row < 1 || col < 1)
    throw std::runtime_error("Minimalni velikost matice je 1x1");
  matrix = std::vector<std::vector< double > >(row,std::vector<double>(col, 0));
}

new 将返回一个 void*,这就是您收到“异常类型不同”错误的原因。

关于c++ - EXPECT_THROW - 实际 : it throws a different type, 谷歌测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42404191/

相关文章:

matlab - 矩阵各行的排列

matlab - 如何在 MATLAB 中按特定顺序将行转置为列?

c++ - 读取输入文件时无限循环?

c++ - 稀疏矩阵

c++ - 在可移动类的构造函数中初始化 std::thread

c++ - 如何避免 const cast 进行 map 访问?

带有成员初始值设定项的 C++ 对象生命周期扩展规则

c++ - 将一些数据写入 Char

c++ - Visual Studio 上带有容器迭代器的别名模板

创建矩阵时的 Python 错误