【问题标题】:Hash set implementation using dynamically allocated array of implementation of Linked lists使用动态分配的链表实现数组的哈希集实现
【发布时间】:2018-08-12 14:13:05
【问题描述】:

我在模板的概念上遇到了麻烦。我的链表类是模板化的,我的哈希集也是如此。

在我的哈希集的私有变量中,我将集合表示为:

LinkedList<T>* hashTab;

我得到了错误

expected member name or ';' after declaration specifiers
**LinkedList<T>*** hashTab;

这是我默认构造哈希集的方式

hashTab = new LinkedList[DEFAULT_CAPACITY];
capacity = DEFAULT_CAPACITY;

这些类位于同一文件夹中的单独头文件中。这个错误的原因可能是什么??

示例:

A.hpp

template<typename T>
class A{
    public: 
    A();
};

B.hpp

#include "A.hpp"

template<typename T>
class B{
    private:
    A<T>* hashTab;
    public: 
    B();
};

template <typename T>
B::B(){
    hashTab = new A[10];
}

【问题讨论】:

  • @AndyG 我做到了
  • @AndyG 我意外删除了旧编辑中新编辑的最后一部分
  • 请整理一个完整的例子,中间没有中断,重现错误。我们必须拼出一个拼图游戏。

标签: c++ templates data-structures hash hashset


【解决方案1】:

在类之外定义模板成员函数时,必须为B 提供模板参数,并且必须始终为成员A&lt;T&gt;* 提供它们:

template <typename T>
B<T>::B(){
    hashTab = new A<T>[10];
}

Demo

【讨论】:

    猜你喜欢
    • 2012-04-30
    • 2013-03-28
    • 2019-05-11
    • 2016-03-25
    • 2012-04-09
    • 2011-10-14
    • 2011-09-15
    • 2012-06-03
    相关资源
    最近更新 更多