私はVS 2010で働いています。機能を拡張し、マルチマップコンテナの機能を再定義しようとしています:
// test_multimap.h
#include <map>
namespace std
{
template <typename TKey, typename TData,
class Compare = less<TKey>,
class Alloc = allocator<pair<const TKey, TData>>
>
class test_multimap: public multimap<TKey, TData, Compare, Alloc>
{
public:
void clear()
{
multimap<TKey, TData>::clear();
}
/*...*/
これは機能しますが、メンバー関数の実装を実行しようとすると、いくつかの問題が発生します。
// test_multimap.h
#include <map>
namespace std
{
template <typename TKey, typename TData,
class Compare = less<TKey>,
class Alloc = allocator<pair<const TKey, TData>>
>
class test_multimap: public multimap<TKey, TData, Compare, Alloc>
{
public:
void clear();
/*...*/
// test_multimap.cpp
#include "stdafx.h"
#include "test_multimap.h"
namespace std
{
template <typename TKey, typename TData,
class Compare = less<TKey>,
class Alloc = allocator<pair<const TKey, TData>>
>
void test_multimap<TKey, TData, Compare, Alloc>::clear()
{
multimap<TKey, TData>::clear();
}
}
この場合、エラーが発生します
C4519 (デフォルトのテンプレート引数は、クラス テンプレートでのみ使用できます) 他のケースでは、さまざまなエラーのセットが発生します。
テンプレート メンバー関数の実装を実行するにはどうすればよいですか??