簡體   English   中英

在模板類中聲明std :: pair的C ++錯誤

[英]C++ error declaring std::pair inside template class

我想避免在插入map使用std::pair()構造函數或std::make_pair()函數。 我也想知道插入操作的成功狀態,所以我不能使用operator[] 我嘗試了以下代碼,但產生了編譯錯誤。

template<typename TKey, typename TVal>
class Map
{
   private :
      std::map<TKey, TVal> m_holder;

   public :
      bool insert(TKey key, TVal val)
      {
         std::pair<std::map<TKey, TVal>::iterator, bool> ret;
         /* ret = m_holder.insert(std::make_pair(key, val)); */
         return 0;
      }
};

int main()
{
   return 0;
}

錯誤:

Hello.cpp: In member function `bool Map<TKey, TVal>::insert(TKey, TVal)':
Hello.cpp:13: error: type/value mismatch at argument 1 in template parameter list for `template<class _T1, class _T2> struct std::pair'
Hello.cpp:13: error:   expected a type, got ` std::map<TKey,TVal,std::less<_Key>,std::allocator<std::pair<const _Key, _Tp> > >::iterator'
Hello.cpp:13: error: invalid type in declaration before ';' token

幫我解決問題。

std::pair<typename std::map<TKey, TVal>::iterator, bool> ret;
//        ~~~~~~~^

暫無
暫無

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

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