[英]ERROR: “dependent name is not a type”. When use typedef type in class as return value, with template
template <class Item>
class bag
{
public:
//TYPEDEF
typedef size_t size_type;
typedef Item value_type;
...
}
當我用的時候
template<class Item>
bag<Item>::size_type bag<Item>::count(const Item& target) const
VC ++報告錯誤為Source.cpp(207):警告C4346:'bag :: size_type':依賴名稱不是類型
有人能告訴我為什么嗎? 謝謝!
它應該是
template<class Item>
typename bag<Item>::size_type bag<Item>::count(const Item& target) const
您需要在bag<Item>::size_type
之前添加typename
,因為它是依賴類型 。
typename bag<Item>::size_type bag<Item>::count(const Item& target) const
根據C ++ 11標准:
14.6名稱解析
假定模板聲明或定義中使用的名稱以及依賴於模板參數的名稱不會命名類型,除非適用的名稱查找包含類型名稱或名稱由關鍵字
typename
限定。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.