是否可以在 if 语句中设置名称空间别名并在之后使用它?
我用下面的代码尝试过:
const int dim = 2;
//default namespace
namespace poissonProblem = poissonProblem3D;
//trying to set the necessary namespace
if(dim == 1){
namespace poissonProblem = poissonProblem1D;
}
else if (dim == 2){
namespace poissonProblem = poissonProblem2D;
}
else if (dim == 3){
namespace poissonProblem = poissonProblem3D;
}
Run Code Online (Sandbox Code Playgroud)
但是当我尝试使用像后来这样的函数时poissonProblem::eval(),它仍然是使用的函数poissonProblem3D::eval()。
您是否有任何想法,或者对其他实施/解决方法的建议?
我不想为每个维度实现代码,因为尽管使用了命名空间,但它几乎是相同的。
谢谢,贾斯特斯
我想编写一个程序,像使用Qt框架的小导航系统一样工作,但是我对它仍然很陌生。
我创建了一个带有两个组合框的对话框。每个组合框都包含所有“城市名称”。在初始化时,两个框的内容均按字母顺序排序。
如果在第一个框中选择了一个名称,则不应在第二个名称中以其他方式显示该名称。
如果选择了另一个项目,我成功地删除了该项目并再次添加了它,但知道我无法对其进行排序
这是我到目前为止尝试进行的更新:
for(std::vector<City>::iterator iter = citylist.begin(); iter != citylist.end(); iter++){
if(ui->combo2->currentText() != (*iter).getName()
and ui->combo1->findText((*iter).getName()) == -1){
ui->combo1->addItem((*iter).getName(),QComboBox::InsertAlphabetically);
}
}
Run Code Online (Sandbox Code Playgroud)
但它不会按字母顺序插入项目...
所以我后来尝试对它进行排序:
QSortFilterProxyModel* proxy = new QSortFilterProxyModel(ui->combo1);
proxy->setSourceModel(ui->combo1->model());
// combo's current model must be reparented,
// otherwise QComboBox::setModel() will delete it
ui->combo1->model()->setParent(proxy);
ui->combo1->setModel(proxy);
// sort
ui->combo1->model()->sort(0);
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试调用此函数,则会发生错误,并且应用程序终止。
那么,有谁可以帮助我呢?