【发布时间】:2015-06-04 16:52:02
【问题描述】:
我正在尝试在 Qt 中实现一个简单的菜单应用程序,并且我必须制作一个过滤器按钮。 Qt 给出一个错误,我不知道如何解释它。它只能来自这两个功能。我也会发布错误的照片。 过滤操作代码:
vector<Car> Controller::filterByCategory(string category) {
vector<Car> fin;
vector<Car> all(repo->getAll());
copy_if(all.begin(), all.end(),fin.begin(),
[&](Car& cc) { return (cc.getCategory()==category); });
return fin;
}
Qt函数调用过滤函数:
void OwnerWindow::filterCategory() {
QString sCategory = lCategory->text();
string category = sCategory.toStdString();
vector<Car> cars = ctrl->getAllCars();
vector<Car> fin;
try {
fin = ctrl->filterByCategory(category);
}
catch(WarehouseException& ex) {
QMessageBox::information(this, "Error!", QString::fromStdString(ex.getMsg()));
}
catch(...) {
QMessageBox::information(this,"wtf",QString::fromStdString("huuuuuh"));
}
这里我的程序崩溃并出现以下错误:
知道会发生什么,为什么 Qt 不会捕获一些错误或为什么代码不工作?
编辑: 我试图计算要添加的元素数量,以便创建具有固定大小的最终向量。没用。
vector<Car> Controller::filterByCategory(string category) {
// vector<Car> fin;
vector<Car> all(repo->getAll());
int i = 0;
for_each(all.begin(),all.end(), [=](const Car& cc) mutable {
if (cc.getCategory() == category) {
i++;
}
});
vector<Car> fin(i);
copy_if(all.begin(), all.end(),fin.begin(),
[&](Car& cc) { return (cc.getCategory()==category); });
return fin;
}
【问题讨论】:
标签: c++ qt visual-c++