当前位置: 技术问答>linux和unix
关于模板类局部特化的错误:模板参数太少。
来源: 互联网 发布时间:2016-12-07
本文导语: 程序如下: template class AMapCoder : public IEgfStdDecoder, public IEgfStdEncoder { public: enum FieldType {UDT_APAIR = 1,}; typedef std::map AMap; public: virtual int encode(EgfStdStream &strm, EgfStdSField &field); virtual int decode(EgfSt...
程序如下:
template class AMapCoder : public IEgfStdDecoder, public IEgfStdEncoder
{
public:
enum FieldType
{UDT_APAIR = 1,};
typedef std::map AMap;
public:
virtual int encode(EgfStdStream &strm, EgfStdSField &field);
virtual int decode(EgfStdStream &strm, EgfStdSField &field);
};
template
int AMapCoder::decode(EgfStdStream &strm, EgfStdSField &field)
{
AMap *pv = new AMap();
typedef AMap::value_type AMapValue; //这行的错误:模板参数太少
AMapValue* APair;
...
}
我用的redhat5.3,它不支持这种特化吗?该怎么修改呢,谢谢。
template class AMapCoder : public IEgfStdDecoder, public IEgfStdEncoder
{
public:
enum FieldType
{UDT_APAIR = 1,};
typedef std::map AMap;
public:
virtual int encode(EgfStdStream &strm, EgfStdSField &field);
virtual int decode(EgfStdStream &strm, EgfStdSField &field);
};
template
int AMapCoder::decode(EgfStdStream &strm, EgfStdSField &field)
{
AMap *pv = new AMap();
typedef AMap::value_type AMapValue; //这行的错误:模板参数太少
AMapValue* APair;
...
}
我用的redhat5.3,它不支持这种特化吗?该怎么修改呢,谢谢。
|
在AMap::value_type前面加typename试试