GCC (MingW-w64) 找不到基构造函数 (!?)
GCC (MingW-w64) cannot find base constructor (!?)
我正在编写一些哈希图实现,偶然发现了一个非常奇怪的问题。
所以我写了一个抽象类,如下所示:
// 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:错误:类"DoubleHashMap"确实如此 没有任何名为"哈希图"的字段 : HashMap(bucketLength)
^
换句话说,就好像编译器找不到基构造函数一样。我做错了什么还是这是 MingW-w64 中的错误?
编辑:尝试了MingW编译器的不同组合(MingW 4.8.3,TDM-GCC 4.8.1),它们都产生相同的错误。
您必须完全指定基类的名称:
DoubleHashMap(unsigned int bucketLength = DEFAULT_BUCKET_LENGTH)
: HashMap<K, V>(bucketLength)
{
...
顺便说一下,你有没有可能从HashMap<K, V, HashFunc>
而不是仅仅HashMap<K, V>
派生
相关文章:
- 给定一个 3 x 3 矩阵或任何 n x n 矩阵,为什么我的以下函数找不到对角线差异?
- 类没有合适的复制构造函数,找不到二进制运算符 '=',
- 找不到基的构造函数
- 在哈希表复制构造函数中找不到错误
- GCC LD:构造I386找不到符号
- 找不到构造函数 - 如何将 CPP 文件添加到 Qt 构建过程
- 构造函数找不到合适的定义,以及 100 个其他错误?
- 找不到默认构造函数
- 找不到C++默认构造函数
- GCC (MingW-w64) 找不到基构造函数 (!?)
- G++ 在执行复制初始化时找不到正确的复制构造函数
- std::调用函数时找不到函数构造函数
- 模板类找不到构造函数
- 什么时候在构造函数的类定义中通过普通查找找不到 mem-initializer-id?
- 复制构造函数 c++:编译器在使用 a = b 时找不到它
- 类函数找不到类定义的变量
- 为什么在对象表达式的上下文中找不到我的构造函数
- 在HardwareStore类中找不到匹配的构造函数(c++)
- 如果模板类构造函数和成员函数的定义与使用分离,则G++链接器找不到它们
- 平均函数找不到正确的平均c++