template模板在Windows和Linux下的不同用法

本文探讨了在Windows(使用VS2010)和Linux(使用Eclipse 20140224-0627)环境下,模板编程时遇到的几个关键差异。包括子类继承模板基类的实例化要求、迭代器typename关键字的使用以及模板类内部同名typename的问题。这些差异可能导致编译错误,需要开发者注意。
摘要由CSDN通过智能技术生成

以下内容说明:windows是采用VS2010,Linux下是使用Eclipse 20140224-0627


一、子类继承模板基类的时候,只能继承一个指定的实例化,在子类的初始化列表中的实例化信息(本例中为<string, int, double>),在Windows下可以省略,在Linux下不可以省略,例子如下:


class CFFundbriefInfo

    : public ConfigFileBase<string, int, double>
{
public:
    CFFundbriefInfo():ConfigFileBase <string, int, double>(“test”, 10, 20.9){};
    CfgTypeEnum GetCfgType() { return 0; };
    const char* GetCfgName() { return "test"; };

};

报错信息如下:

error: class ‘CFCurrencyInfoFile’ does not have any field named ‘ConfigFileBase’


二、在使用模板的std的容器的迭代器时,Windows下定义迭代器可以不需要在前面写typename,Linux下的Eclipse必须要写,否则编译不过。


for(<

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值