[導(dǎo)入]More Exceptional C++ 之 4
typename 常常在模板類的聲明或定義中用來聲明一個類型。在模板中,如果一個和模板參數(shù)相關(guān)的名字沒有在名字解析中被找到,或者被關(guān)鍵字 typename 修飾,則它不能作為一個類型。考慮下面的代碼:template< typename T >
class X_base
{
public:
typedef T instantiated_type;
};
template< typename A, typename B >
class X : public X_base< B >
{
public:
bool operator()( const instantiated_type& i ) const
{
return i != instantiated_type();
}
// ... more stuff ...
};
instantiated_type 和模板參數(shù)類型相關(guān),使用名稱解析不能找到并且沒有被關(guān)鍵字 typename 修飾,因此將導(dǎo)致編譯錯誤,正確的方法是使用關(guān)鍵字 typename。
文章來源:http://my.donews.com/robinchow/2007/01/18/gywtqxaalrvetoldhdtlmchhlsmnfxklwgem/
posted on 2007-10-23 20:47 Robin Chow 閱讀(82) 評論(0) 編輯 收藏 引用