当前位置:  开发笔记 > 编程语言 > 正文

如何迭代地找到几个名称在C++中只有数字不同的变量?

如何解决《如何迭代地找到几个名称在C++中只有数字不同的变量?》经验,为你挑选了1个好方法。

我需要一个帮助我的方法,在循环中各自到达名为"comboBox1","comboBox2"等变量.我想改变代码:

//proceed comboBox1
//proceed comboBox2
//proceed comboBox3
//proceed comboBox4
//proceed comboBox5
//proceed comboBox6

成:

for (int i = 1; i < numberOfBoxes; i++) {
    //proceed comboBox(i)
}

我试图找到像'eval'这样的东西,但谷歌没有给出任何匹配的东西.我也尝试使用运算符##预处理名称,但似乎没有办法将当前整数值放到宏中.



1> Evan Teran..:

最简单的解决方案是将它们全部放在一个数组中并使用迭代器:

// I've made up a type, but you get the idea.
std::vector combos;
combos.insert(comboBox1);
combos.insert(comboBox2);
combos.insert(comboBox3);
combos.insert(comboBox4);
combos.insert(comboBox5);
combos.insert(comboBox6);

现在你可以迭代组合了.主要问题是c ++没有反射.因此,您无法在运行时生成字符串,并且可以像其他语言一样获取对象或函数的地址.

编辑:我刚看到你正在使用Qt.在这种情况下,您应该使用:

QList qFindChildren ( const QObject * obj, const QString & name );

要么

QList qFindChildren ( const QObject * obj, const QRegExp & regExp);

这使您可以根据运行时生成的名称获取列表.例如:

QList combos = qFindChildren(ui, QRegExp("combo[0-9]+"));

然后你就可以迭代了!

推荐阅读
个性2402852463
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有