lines定义如下 QMap<QString,Line> lines;
Line的定义如下
class Line{
protected:
QString name;
QColor color;
QList<int> total_stations; // all statuib
QList<QString> start_stas,end_stas; //start end station
QList<QList<QString>>sta_list; //
public:
Line(){};
friend class SubwaySystem;
friend class MainWindow;
friend class SubwayControlWindow;
};
void SubwaySystem::statisticEdges(){
/*
在C++中,list是一个双向链表容器,它提供了许多用于访问和操作链表元素的方法
。其中,at()函数用于访问链表中指定位置的元素。
*/
for(auto &line:this->lines.values())
for(auto &sta_list:line.sta_list){
int len= sta_list.size();
for(int i=0;i<len;i++){
if(i>0) this->stations[sta_list.at(i)].addEdge(this->stations[sta_list.at(i-1)],line.name);
if(i<len-1) this->stations[sta_list.at(i)].addEdge(this->stations[sta_list.at(i+1)],line.name);
}
}
}
但是 我们看到我们调用了保护成员sta_list
但其实lines也是保护成员 隶属于 SyswaySystem 类
for循环这个遍历函数也属于SyswaySystem类
但是为什么能够调用Line的保护成员呢文章来源:https://www.toymoban.com/news/detail-703443.html
我们可以看到在public中
我们使用了friend class SyswaySystem 声明了友元类
这样 我们就可以访问Line的保护成员了文章来源地址https://www.toymoban.com/news/detail-703443.html
到了这里,关于Qt5下遍历QList的方法的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!