关于C++从属名称
来源:互联网 发布:c语言转义字符有哪些 编辑:程序博客网 时间:2024/05/18 01:30
在《EFFECTIVE C++ 3.0》的第41条款提到:
在使用从属嵌套类型名称是需要使用typename来修饰,因为类属模板的实现是“编译时”的,若下状况
void print(const T& con)
{
if(con.size() >= 2)
{
T::const_iterator iter(con.begin());
++iter;
int value = *iter;
std::cout<<value<<endl;
}
}
编译器无法知道T::const_iterator到底是T里的成员呢,还是像我们一样,能把他当做一种类型来看待,因此编译器就无法匹配出对应的代码,从而编译错误
不过我分别使用了G++和VC编译,发现VC是可以通过的!!
而G++过不了,报错的内容也是:T::const_iterator需要加个";"
从而我们可以看出编译器确实把T::const_iterator当做一个成员了
还有vector<vector<int>> vec;在G++也是编译不过的,因为编译器突然看到">>"这个右移运算符,觉得莫名奇妙
不过VC还是编译过了,说明VC编译器确实一分钱一分货啊~~~体积庞大,也有它设计的独到之处。
不过这个就难为程序员了,当移植代码时,G++是读不出的,所以建议VC程序员还是符合标准吧,在T::const_iterator前添加typename给编译器标示一下,<int>后加个空格
- 关于C++从属名称
- 关于list从属的关系
- C++primer 关于名称空间
- Effective C++第七章-模板和泛型编程之typename与嵌套从属名称
- 关于强名称
- 关于强名称
- 关于计算机名称
- C++ 关于 线程名称
- c/c++名称修饰
- 【C++】boost名称含义
- c/c++名称修饰
- 【C#】C#名称空间
- 关于C生成的汇编与C++生成的汇编在函数名称上的差异
- 文件类型和从属关系
- 理解VB从属对象
- weblogic从属服务器启动
- 主控-从属模式
- 关于中国高校的名称列表
- 要下载东西,一个积分都没有
- ADO
- 郁闷
- 怎样把自己培养成一个能保护自己的黑客
- Sql Server 常用函数
- 关于C++从属名称
- 误删资料恢复
- ASP.NET——邮件发送
- 软件制定优点
- Linux0.11内核--启动代码分析setup.s 建立页目录和页表
- tuning-primer
- 基础编程50道(选)
- 控件篇——布局控件
- 求单链表长度(模板)