什么是嵌套从属名称

booirror 2013-10-31 11:04:12
如何能看出C::const_iterator是嵌套

template<typename C>
void print2nd(const C& container)
{
if (container.size() >= 2)
{
C::const_iterator iter(container.begin());
++iter;
int value = *iter;
std::cout << value;
}
}
...全文
342 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
Crawl.W 2015-12-10
  • 打赏
  • 举报
回复
其实二楼说的就是对的了,作者后面的内容中也有注释
还有多远 2013-11-01
  • 打赏
  • 举报
回复
引用 楼主 booirror 的回复:
如何能看出C::const_iterator是嵌套
template<typename C>
void print2nd(const C& container)
{
	if (container.size() >= 2)
	{
		C::const_iterator iter(container.begin());
		++iter;
		int value = *iter;
		std::cout << value;
	}
}
骚年,::是作用域操作符,常用于namespace::fun()、namespace::class、namespace::data,以及class::fun、data、class(这里必须是public static的fun,class,data),这里说的class是广义的,包括struct和enum。 你说的怎么看出来C::const_iterator是嵌套,这样考虑: 首先template<typename C>已经告诉我们C是一个类型,不是namespace,这一点从const C& container用C指定了container的类型也可以看出; 其次,C::const_iterator iter(container.begin());是定义了一个变量(用container.begin()初始化),所以C::const_iterator必然也是一个类型,class::fun和class::data都不是类型,不能声明或定义变量,只有class::class是一个类型,可以定义变量,所以C::const_iterator是嵌套class,nested class
booirror 2013-11-01
  • 打赏
  • 举报
回复
引用 3 楼 ForestDB 的回复:
“嵌套从属名称”是谁翻译的?
大名鼎鼎的侯捷大牛
ForestDB 2013-11-01
  • 打赏
  • 举报
回复
“嵌套从属名称”是谁翻译的?
booirror 2013-11-01
  • 打赏
  • 举报
回复
还是不懂啊啊
ri_aje 2013-10-31
  • 打赏
  • 举报
回复
:: 表示在前者作用域内的某实体,通俗的讲就是嵌套的。

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧