我在 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(默认情况下模板参数只能在类模板中使用)在其他情况下,我会得到一组不同的错误。
如何进行模板成员函数的实现??