gpt4 book ai didi

c++ - 是否可以在自己的模板类中使用 QMultiMap::ConstIterator?

转载 作者:行者123 更新时间:2023-11-30 04:32:43 25 4
gpt4 key购买 nike

我想使用

遍历 QMultiMap
QMultiMap<double, TSortable>::const_iterator it;`

但是编译器报错

error: expected ‘;’ before ‘it’

导致

error: ‘it’ was not declared in this scope

适用于各种用途。我尝试了 ConstIteratorconst_iterator 甚至更慢的 Iterator 都没有成功。甚至可以将 Q(Multi)Map 与模板类一起使用吗?为什么我不能在定义(如 void*)正常时声明 Iterator?

我使用以下代码(包括省略的守卫):

#include <QtCore/QDebug>
#include <QtCore/QMap>
#include <QtCore/QMultiMap>
#include <limits>

/** TSortable has to implement minDistance() and maxDistance() */
template<class TSortable>
class PriorityQueue {
public:

PriorityQueue(int limitTopCount)
: limitTopCount_(limitTopCount), actMaxLimit_(std::numeric_limits<double>::max())
{
}

virtual ~PriorityQueue(){}

private:
void updateActMaxLimit(){
if(maxMap_.count() < limitTopCount_){
// if there are not enogh members, there is no upper limit for insert
actMaxLimit_ = std::numeric_limits<double>::max();
return;
}
// determine new max limit

QMultiMap<double, TSortable>::const_iterator it;
it = maxMap_.constBegin();
int act = 0;
while(act!=limitTopCount_){
++it;// forward to kMax
}
actMaxLimit_ = it.key();

}

const int limitTopCount_;
double actMaxLimit_;
QMultiMap<double, TSortable> maxMap_;// key=maxDistance
};

最佳答案

GCC 在您引用的错误之前给出此错误:

error: need ‘typename’ before ‘QMultiMap<double, TSortable>::const_iterator’ because ‘QMultiMap<double, TSortable>’ is a dependent scope

这说明了问题。添加 typename 关键字:

typename QMultiMap<double, TSortable>::const_iterator it;

它会构建。

关于c++ - 是否可以在自己的模板类中使用 QMultiMap::ConstIterator?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7461779/

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