打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
从VC6.0平台级到VS2008平台(之二)
userphoto

2010.10.31

关注
从VC6.0平台级到VS2008平台(之二) 收藏
3、模板特殊化(Template specialization)
模板的特殊化是当模板中的pattern有确定的类型时,模板有一个具体的实现。例如假设我们的类模板pair 包含一个取模计算(module operation)的函数,而我们希望这个函数只有当对象中存储的数据为整型(int)的时候才能工作,其他时候,我们需要这个函数总是返回0。这可以通过下面的代码来实现:
template <class T>
class Pair {
    T value1, value2;
public:
    Pair (T first, T second){
        value1=first;
        value2=second;
    }
    T module () {return 0;}
};
template <>
class Pair<int> {
    int value1, value2;
public:
    Pair (int first, int second){
        value1=first;
        value2=second;
    }
    int module ();
};
//在模板特例化中,NET的特性
template<> int Pair<int>::module() {
    return value1%value2;
}
这里要注意,在.NET中template<>是不需要的,否则会发生
Compiler Error C2910
Error Message
'function' : cannot be explicitly specialized错误,
见:http://msdn.microsoft.com/en-us/library/cx7k7hcf(VS.80).aspx
4、STLport VS VS2008:
因为VC6对标准C++的支持不够,所以我们用了STLport库,然而在VS2008下MS的已经差不多和标准相同了啊,所以,没有必要在使用STLport库。在整理工程中,把其去掉。
5、旧的CRT库和新的安全CRT库引起的C4996告警
    解决了环境变量设置不匹配导致的问题后,编译过程就真正开始了,不过首先映入眼帘的应该是成堆的C4996编译告警,对每个使用了含字符串参数的CRT库函数都会有C4996编译告警,一个典型的输出如下所示:
f:\project\.....\commonfunc.cpp(280) : warning C4996: 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details.
e:\software\microsoft visual studio 9.0\vc\include\string.h(74) : see declaration of 'strcpy'
    MSDN online 是这样解释的:为了显著增加CRT库的安全性,许多CRT函数都有了一个更安全的新版本,新版本和旧版本的区别就是新版本函数名多了一个_s后缀。只要一个CRT函数有新的安全版本,编译器就会产生一个C4996告警,不过,出现这个告警的目的并不是说旧版本的CRT函数将淡出CRT库,告警出现只是为了提醒程序员这个函数有更安全的版本存在。一种安全的或者是被鼓励的做法是用安全版本的函数替换现有的CRT函数,不过对于一个有相当代码量的项目,替换工作量也是巨大的,这可不是用名称查找、替换就能简单解决的问题,因为许多安全版本的CRT函数参数个数也发生了变化。也可以用预处理指令消除这个告警:
#pragma warning( disable : 4996 )
或者定义 _CRT_SECURE_NO_WARNINGS 压制这个告警(在stdafx.h中define或在项目属性中设置预处理符号,PreProcessor Definitions)。
    除了C语言的CRT函数外,POSIX 兼容函数也存在这个告警,解决方法是用POSIX标准名称替换(比如access换成_access)或者是定义 _CRT_NONSTDC_NO_WARNINGS 压制这个告警(方法同上)。
 
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/zhangbinjn/archive/2009/09/04/4516785.aspx
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VC6.0 转 VS2005
C++类模板(模板类)详解
C++中的变长参数
visual studio新手使用教程(要写代码就需要新建工程并添加源文件)(编译一闪而退的问题getchar()函数等待从从键盘获取一个字符串在前面加上fflush(stdin)就确保万无一失)
vs2015部署
C++的学习感想
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服