GCC (MingW-w64) 找不到基础构造函数 (!?)

GCC (MingW-w64) cannot find base constructor (!?)

我正在编写一些 hashmap 实现并且偶然发现了一个非常特殊的问题。
所以我写了一个摘要class如下:

// HashMap.hpp
template<typename K, typename V, typename HashFunc = std::hash<K>>
class HashMap
{
public:
    HashMap(unsigned int bucketLength = DEFAULT_BUCKET_LENGTH)
        : m_bucketsLength(bucketLength)
        , m_bucketsFilled(0)
    {
        m_keyValueVector.resize(m_bucketsLength, nullptr);
    }
    virtual ~HashMap()
    {

    }
...
};

并从中派生出一个实现:

// DoubleHashMap.hpp
#include "HashMap.hpp"

template<typename K, typename V, typename HashFunc = std::hash<K>>
class DoubleHashMap : public HashMap<K, V>
{
public:
    DoubleHashMap(unsigned int bucketLength = DEFAULT_BUCKET_LENGTH)
        : HashMap(bucketLength) // This is the line at which the build fails
    {

    }
...
};

使用 Visual Studio 2013 一切都很好,但是当尝试使用 MingW-w64 4.9.1 构建它时,我收到以下错误:

DoubleHashMap.h:11: error: class 'DoubleHashMap' does not have any field named 'HashMap' : HashMap(bucketLength)
^

换句话说,就好像编译器找不到基构造函数一样。 我做错了什么或者这是 MingW-w64 中的错误?

编辑:尝试了 MingW 编译器的不同组合(MingW 4.8.3、TDM-GCC 4.8.1),它们都产生相同的错误。

您必须完整指定基地的名称class:

DoubleHashMap(unsigned int bucketLength = DEFAULT_BUCKET_LENGTH)
    : HashMap<K, V>(bucketLength)
{
  ...

顺便说一句,您是否打算派生自 HashMap<K, V, HashFunc> 而不仅仅是 HashMap<K, V>