typename

来源:7-5 深度优先遍历和联通分量

weixin_慕设计6333414

2021-06-03

为什么Graph前面要加typename呢?老师一笔带过实在是听不懂…

写回答

1回答

liuyubobobo

2021-06-04

如果你的问题是 28 行的 Graph 前的 typename,你可以尝试一下,不写这个 typename,编译报错。


typename Graph::adjIterator adj中,这个 typename 的意思显示的表示,这个 Graph 是当前这个类的一个模板,而非一个类或者一个命名空间。所以,整体 typename Graph::adjIterator 是一个类型,而不是一个变量(或者函数什么的)(比如你在这个类中调用 Components::id,同样使用了 ::,后面就是一个变量,而非一个类型)


如果你对这个语法不熟悉,说明你对 C++ 的 template 使用的比较少。如果感兴趣,可以再复习一下这方面的知识。在网上搜索一下,也能找到很多对此的讲解。我随便搜了一下,比如这种文章:https://feihu.me/blog/2014/the-origin-and-usage-of-typename/


但如果没兴趣,大概了解就好,这些不是这个课程的重点。可以参考这里:https://coding.imooc.com/learn/questiondetail/vZ85pzYG9Rk6n0rV.html


继续加油!:)

0
0

算法与数据结构(C++版) 面试/评级的算法复习技能包

课程专为:短时间内应对面试、升职测评等艰巨任务打造

11187 学习 · 1614 问题

查看课程