当前位置: 首页 > news >正文

STL模版在vs2019和gcc中的特殊问题

任何时候在模板(template)中使用一个嵌套从属类型名称, 需要在前一个位置, 添加关键字typename;

比如下面程序中使用迭代器类型时,就要使用typename.虽然在vs2010 和vs2015中没有错误,但在VC++2019和gcc编译器中,都会报错。

#include <iostream>
#include <string>
#include <vector>
#include <deque>
#include <list>
#include <Windows.h>using namespace std;string line(50, '-');template <typename T>
void printInf(const list<T>& object)throw() {/* vs2019  gcc 中定义const_iterator前面必须加 typename* typename list<T>::const_iterator */typename list<T>::const_iterator citor = object.begin();for (; citor != object.end(); citor++) {cout << *citor <<endl;}cout << endl;cout << "size: " << object.size() << endl;cout << line << endl;return;
}class Student {
public:Student() {cout << "默认构造函数调用!" << endl;this->m_name = "***";this->m_age = 0;}Student(string name,int age) {cout << "带参构造函数调用!" << endl;this->m_name = name;this->m_age = age;}Student(const Student& stu) {cout << "拷贝构造函数调用!" << endl;this->m_name = stu.m_name;this->m_age = stu.m_age;}~Student() {cout << "析构函数调用!" << endl;}friend ostream& operator<<(ostream& out, const Student& stu);
private:string m_name;int m_age;
};ostream& operator<<(ostream& out, const Student& stu) {out << stu.m_name << "  年龄: " << stu.m_age ;return out;
}int main() {Student s1("对小帅", 19);Student s2("旺达", 21);Student s3("李小", 29);Student s4("谨记帅", 24);Student s5("常常", 22);Student s6("呼呼", 23);cout << line << endl;list<Student> stuList;stuList.push_back(s1);stuList.push_back(s2);stuList.push_back(s3);stuList.push_back(s4);stuList.push_back(s5);stuList.push_back(s6);cout << line << endl;printInf(stuList);system("pause");return 0;
}

文章转载自:

http://diutYJjR.Lnbcg.cn
http://AkOcA8Vf.Lnbcg.cn
http://GSekTJ8B.Lnbcg.cn
http://Qf8Gc8Ze.Lnbcg.cn
http://bRB8hTO0.Lnbcg.cn
http://Q56lH9yI.Lnbcg.cn
http://15cbXOu7.Lnbcg.cn
http://bNnAZjOc.Lnbcg.cn
http://ItHu9WKC.Lnbcg.cn
http://MknJZFRS.Lnbcg.cn
http://p4GySDxE.Lnbcg.cn
http://SmVVfTJC.Lnbcg.cn
http://6MTlcwKI.Lnbcg.cn
http://CDMh1qmW.Lnbcg.cn
http://s3dC5Vag.Lnbcg.cn
http://wl6UcVFQ.Lnbcg.cn
http://2sGWXAgr.Lnbcg.cn
http://RtpY0V5W.Lnbcg.cn
http://EhEeOZOw.Lnbcg.cn
http://yZHrCuJg.Lnbcg.cn
http://lXjmlpM1.Lnbcg.cn
http://GjJF4XqU.Lnbcg.cn
http://DGL21eSJ.Lnbcg.cn
http://mND7ZFqN.Lnbcg.cn
http://oxhh7Odm.Lnbcg.cn
http://oC2mAQG7.Lnbcg.cn
http://OwdnBVqY.Lnbcg.cn
http://VZZ5yYZY.Lnbcg.cn
http://zWbXDQxT.Lnbcg.cn
http://3CQ0zPsz.Lnbcg.cn
http://www.dtcms.com/a/370298.html

相关文章:

  • 《Java线程池面试全解析:从原理到实践的高频问题汇总》
  • Compose笔记(四十八)--PullRefresh
  • 性能优化的边界-不该优化什么
  • Qt串口通信学习
  • 云手机运行流畅,秒开不卡顿
  • Spring Boot中MyBatis的定义与使用
  • MQTT 与 Java 框架集成:Spring Boot 实战(二)
  • 使用Shell脚本实现Linux系统资源监控邮件告警
  • 提示词工程知识积累及分析
  • Excel 表格 - Excel 收起与展开工具栏
  • ElemenetUI之常用小组件
  • 【c++】函数重载
  • 算法复杂度分析:从理论基础到工程实践的系统认知
  • Java-118 深入浅出 MySQL ShardingSphere 分片剖析:SQL 支持范围、限制与优化实践
  • 小智医疗:Java大模型应用项目全流程实战
  • DeepSeek辅助在64位Linux中编译运行32位的asm-xml-1.4程序
  • Claude 中国禁用后,阿里 1T 参数模型 Qwen3-Max 连夜发布,效果太强了
  • C++并发编程指南 std::promise 介绍与使用
  • 使用函数调用对整形数组进行排序
  • Linux bzip2 命令使用说明
  • python打包工具setuptools
  • 屏幕小管家——图像识别自动操作助手
  • hbuilderX的gite项目怎么看项目地址
  • 【MFC】对话框节点属性:Language(语言)
  • 联邦学习论文分享:Towards Building the Federated GPT:Federated Instruction Tuning
  • 【Neovim】Vi、Vim、Neovim 与 LazyVim:发展史
  • Eigen中Eigen::Affine3d和Eigen::Isometry3d详解
  • 得物前端二面面经总结
  • 如何离线安装 VirtualMachinePlatform
  • Redisson分布式事务锁