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的保护成员了

相关推荐
coding随想6 分钟前
掌控网页的魔法之书:JavaScript DOM的奇幻之旅
开发语言·javascript·ecmascript
爱吃烤鸡翅的酸菜鱼25 分钟前
IDEA高效开发:Database Navigator插件安装与核心使用指南
java·开发语言·数据库·编辑器·intellij-idea·database
心情好的小球藻1 小时前
Python应用进阶DAY9--类型注解Type Hinting
开发语言·python
惜.己1 小时前
使用python读取json数据,简单的处理成元组数组
开发语言·python·测试工具·json
Y4090011 小时前
C语言转Java语言,相同与相异之处
java·c语言·开发语言·笔记
古月-一个C++方向的小白7 小时前
C++11之lambda表达式与包装器
开发语言·c++
沐知全栈开发7 小时前
Eclipse 生成 jar 包
开发语言
杭州杭州杭州8 小时前
Python笔记
开发语言·笔记·python
tanyongxi669 小时前
C++ AVL树实现详解:平衡二叉搜索树的原理与代码实现
开发语言·c++
阿葱(聪)10 小时前
java 在k8s中的部署流程
java·开发语言·docker·kubernetes