簡體   English   中英

錯誤:“依賴名稱不是類型”。 當在類中使用typedef類型作為返回值時,使用模板

[英]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限定。

相關: 我必須在何處以及為何要使用“模板”和“typename”關鍵字?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM