矢量与类数组对象实例化

时间:2015-11-23 10:21:31

标签: c++ vector hashtable

我现在正在创建一个哈希表,我有两个类hashtableindex和term。我创建了一个指向术语的向量数组,我无法通过构造函数,因为我得到了一个超出范围的错误。我不能使用标准库中的无序映射,所以我必须创建自己的。 这是hashtableindex的构造函数和私有函数:

hashtableindex.cpp

#include "hashtableindex.h"
HashTableIndex::HashTableIndex(){
    for(int i=0; i< hash_size; i++){
        hash_vector.push_back(new Term());
    }
}       

hashtableindex.h

#include "term.h"
#include <vector>
class HashTableIndex
{

public:
    HashTableIndex();
    ~HashTableIndex();
private:
   vector<Term*> hash_vector;
   const unsigned long hash_size = 1000000;
};

这是来自术语

的所有代码
term.cpp

#include "term.h"

Term::Term()
{
    name = "";
    next = NULL;
}

Term::~Term()
{

}

Term::Term(string theName)
{
    next = NULL;
    name = theName;
}

'

term.h
#include <string>
#include <vector>
#include <cstdio>
using namespace std

class Term
{
public:
    Term();
    ~Term();
    Term(string name);
    string getName();
    void setName(string name);
private:
    string name;
    Term* next;

无法弄清楚什么是错的,但是当我在构造函数中调用向量推回时调试时出现错误任何帮助都非常感谢谢谢

1 个答案:

答案 0 :(得分:2)

你的Term类'构造函数以递归方式调用它自己。

Term::Term()
{
    name = "";
    next = new Term(); // recursion here!
    appearances.push_back(new node());
}

你应该重新考虑你的设计以防止这种递归。