我正在尝试创建一个简单的表类,其中包含两个使用成员初始化列表初始化的向量:
Table.hh
class Table
{
public:
Table(vector<double> a, vector<double> b);
~Table();
double interpolate(double val, bool extrapolate = true);
double integrate();
void print();
private:
vector<double> x, y;
};
Table.cc
Table::Table(vector<double> a, vector<double> b)
: x(a), y(b)
{
cout << this->x.size() << " " << this->y.size() << endl;
try
{
if (this->x.size() != this->y.size())
throw LengthException();
}
catch(exception &e)
{
cout << e.what() << endl;
}
}
当我尝试通过创建表的新实例来测试异常时:
vector<double> a = {1.0, 2.0, 3.0, 4.0};
vector<double> b = {1.0, 2,0, 3.0};
Table* mytable = new Table(a, b);
我发现异常没有被抛出,每个向量的大小都是4。
我无法立即明白为什么这不能按预期工作,有人可以帮忙吗?
答案 0 :(得分:1)
因为向量b
的大小是4:
我重新格式化了您的代码,现在它应该是显而易见的:
vector<double> b = { 1.0,
2,
0,
3.0 };