跨平台模板的写法
来源:互联网 发布:淘宝连击抽奖技巧 编辑:程序博客网 时间:2024/05/01 21:32
(若转载,请注明原出处与作者,作者:Witton)
由于工作的原因,自己写的代码,需要跨平台运行(windows与Linux),但是由于VC编译器与gcc/g++编译器的差别,有的代码,在VC下面编译OK,在Linux下却未必编译得过,下面就是一个典型的例子:
请先看一下下面的一段代码是否有问题:
#include <iostream>using namespace std;template <typename T>class CT{public: static void StaticInit() { pInstance = new T; assert(pInstance); } static void StaticDestroy() { delete pInstance; } static T* Instance() { assert(pInstance); return pInstance; };protected: static T* pInstance; CT( void ) { } virtual ~CT( void ) { }};class CTestClass : public CT<CTestClass>{private: CTestClass(); friend class CT;};CTestClass * CT<CTestClass>::pInstance = NULL;
上面这段代码,在VC环境下编译是完全没有问题的;但是在Linux下编译就会有问题:
在friend class CT这一行会报错:
template argument required for `class CT'
friend declaration does not name a class or function
在最后一行代码处会报错:too few template-parameter-lists
为了让所写的代码既能在Windows下编译通过,也能在Linux下编译通过,就需要作如下修正:
将friend class CT改成friend class CT<CTestClass>
在最后一行的前一行加上template<>
- 跨平台模板的写法
- 跨平台宏的写法
- 跨平台类的写法
- 跨平台函数指针的写法
- 模板参数表的写法
- 一些模板的写法
- 类模板的写法
- 模板类友元函数的写法
- 类模板的成员函数模板写法
- thinkphp关于模板日期的写法
- c++模板类成员函数的写法
- 模板的写法,写一个titleBar
- 矩阵快速幂的写法(模板)
- thinkphp关于模板日期的写法
- Vue2 模板template的四种写法
- NetBeans平台中打开文件的写法
- Qt:平台相关的代码写法
- Qt:平台相关的代码写法
- 在线统计人数
- java模式之单例模式
- DB2 应用性能调整实录
- Shell编程笔记(高级1)-深入讨论awk和<<
- 问题
- 跨平台模板的写法
- Shell编程笔记(高级2)文本过滤
- dsafda
- 判断密码强弱
- 做个高效程序员
- 快五一了,写点东西。
- javascript 去除空格
- 目标管理的S.M.A.R.T.理念
- 快毕业了