0

私は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 (デフォルトのテンプレート引数は、クラス テンプレートでのみ使用できます) 他のケースでは、さまざまなエラーのセットが発生します。

テンプレート メンバー関数の実装を実行するにはどうすればよいですか??

4

1 に答える 1