gpt4 book ai didi

qt - foreach在QPair列表上不起作用

转载 作者:行者123 更新时间:2023-12-03 22:39:21 25 4
gpt4 key购买 nike

使用Qt,我希望这段代码能够正常工作:

QList<QPair<QString, QString>> list;
foreach (QPair<QString, QString> pair, list)
{
}

相反,我得到了错误:

'pair' : undeclared identifier



使用 typedef可以使它起作用,但这不是我想要的(除非这是唯一起作用的东西):
typedef QPair<QString, QString> MyPair;
QList<MyPair> list;
foreach (MyPair pair, list)
{
}

谁能解释为什么第一个foreach无法编译?

最佳答案

在qt foreach语句中不能使用包含多个模板参数的模板类,因为逗号分隔符与宏内部的逗号分隔符冲突。

#define add( a, b ) (a + b)

template < typename T1, typename T2 >
struct DATA
{
static const T1 val1 = 1;
static const T2 val2 = 2;
};

// Usage
const int c = add( 1, 2 ); // OK
const int d = add( DATA< int, int >::val1 , DATA< int, int >::val2 ); // FAIL

因为宏add会将“DATA ::val1”解释为第二个参数,依此类推。

关于qt - foreach在QPair列表上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16104192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com