Qt5下遍历QList的方法

lines定义如下 QMap<QString,Line> lines;

Line的定义如下

cpp 复制代码
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;
};
cpp 复制代码
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的保护成员呢

我们可以看到在public中

我们使用了friend class SyswaySystem 声明了友元类

这样 我们就可以访问Line的保护成员了

相关推荐
晓13131 分钟前
第七章 【C语言篇:文件】 文件全面解析
linux·c语言·开发语言
愚者游世1 分钟前
Delegating Constructor(委托构造函数)各版本异同
开发语言·c++·程序人生·面试·改行学it
梵刹古音3 分钟前
【C语言】 指针基础与定义
c语言·开发语言·算法
Ekehlaft7 分钟前
这款国产 AI,让 Python 小白也能玩转编程
开发语言·人工智能·python·ai·aipy
rit84324999 分钟前
MATLAB中Teager能量算子提取与解调信号的实现
开发语言·matlab
开源技术12 分钟前
Python GeoPandas基础知识:地图、投影和空间连接
开发语言·ide·python
Cult Of15 分钟前
Alicea Wind的个人网站开发日志(2)
开发语言·python·vue
我找到地球的支点啦20 分钟前
通信扩展——扩频技术(超级详细,附带Matlab代码)
开发语言·matlab
微小冷39 分钟前
Rust异步编程详解
开发语言·rust·async·await·异步编程·tokio
A9better43 分钟前
C++——不一样的I/O工具与名称空间
开发语言·c++·学习