hur.cn - 华软网

 热门搜索

CStringA 的定义问题

  作者:未知    来源:网络    更新时间:2011/6/7
在vs2010中发现这样的问题:查找CSTringA的定义结果如下:
typedef ATL::CStringT< char, StrTraitMFC_DLL< char > > CStringA;
再查找其中StrTraitMFC_DLL的定义如下:
template< typename _CharType, class StringIterator>
class StrTraitMFC_DLL : public StringIterator
{
public:
static HINSTANCE FindStringResourceInstance( UINT nID ) throw()
{
return( AfxFindStringResourceHandle( nID ) );
}

static ATL::IAtlStringMgr* GetDefaultManager() throw()
{
return( AfxGetStringManager() );
}
};

问题是:既然模板类StrTraitMFC_DLL的参数有两个:_CharType和StringIterator,为什么在“typedef ATL::CStringT< char, StrTraitMFC_DLL< char > > CStringA”中它只给了一个参数“StrTraitMFC_DLL< char >”呢?
---华软 网友回答---
默认赋值
---华软网友回复---
微软想这么用,你有什么办法呢?
---华软网友回复---
你没看到原始定义,第二个模板参数有默认类型
---华软网友回复---
谢谢楼上啊,我找到原始定义了,嘿嘿:
template< typename _CharType = char, class StringIterator = ATL::ChTraitsCRT< _CharType > >
class StrTraitMFC_DLL;      
华软声明:本内容来自网络,如有侵犯您版权请来信指出,本站立即删除。