Boost unordered map containerのラッパーメソッドを書いていました。 boost unordered Mapには、begin()メソッド があり、最初の要素にイテレータを返します。私のラッパーでは、私はtemplatizedラッパーを書くことを試みる。たとえば、boost :: unordered_mapでテンプレート引数を指定する際のコンパイルエラー
template< class Tkey, class Tvalue>
class CMyUnorderedMap
{
boost::Unordered_map<TKey, TValue> m_myMap;
public:
boost::unordered_map<TKey, TValue>::iterator Begin();
};
template< class Tkey, class Tvalue>
boost::unordered_map<TKey, TValue>::iterator CMyUnorderedMap< TKey, TValue >::Begin()
{
return m_myMap.begin()
}
上記のコードを(テンプレート引数を使用して)コンパイルすると、次のようにVS 2010でコンパイルエラーが発生します。
warningc4346:boost :: unordered :: unordered_map < TKey、TValue> :: iterator:従属名は型ではありません。
エラーC3860テンプレート引数リストの次クラステンプレート名がtempateののparamaterリスト
で使用されるためにPARAMATERSをリストする必要があります。しかし私は、テンプレート引数を指定してコードをコンパイルする場合、コードは準拠しています。それは
boost::unordered_map< std::string, std::string>::iterator Begin();
の作品を下回るように指定した場合、例えば ウィル1つのヘルプ
@R Sahu i指定されたクラスのテンプレートは、コンパイルエラー – Ushus
@Ushus、[最小、完全、および検証可能な例](http://stackoverflow.com/help/mcve)、およびコンパイラのエラーメッセージを投稿してください。コメントを通じて話すのは生産的ではありません。 –