解引用结构向量的指针时c ++分段错误

时间:2017-04-23 17:10:47

标签: c++ pointers vector hashtable

所以我正在为一个类创建一个封闭哈希哈希表,我有一个结构

struct Example {
  string key;
  string data;

  Example() { key = "000"; }
};

和一个包含成员的类,该成员指向结构向量,构造函数和函数,我将用它来说明问题。

class hash_table {
  private:
  vector<Example>* hash;

  public:
  hash_table(int size);
  void dummy_method();
 };

它意味着根据用户/文件输入动态分配向量中的结构数。

hash_table :: hash_table ( int size=10 )
{
  //initialize vector 
  vector<Example> * hash = new vector<Example>(size);
  //test objects
  for(int i=0;i<size;i++)
    cout<<(*hash)[i].key<<endl;
}

上面的代码似乎初始化了10个成员,因为它打印出“000” 十次。

然而,一旦我通过调用dummy_method -

尝试这个
void hash_table::dummy_method() { 
  cout<<(*hash)[0].key<<endl;
} 

我遇到了分段错误

我很确定这甚至不是正确的方法,但我一直在寻找/修补我似乎无法找到解决方案。我绝对必须使用指向结构向量的指针,我很确定我应该动态分配每个结构(不知何故)。谢谢你的帮助。

(同样,是的,我们实际上必须使用命名空间,因此没有std在任何地方)

1 个答案:

答案 0 :(得分:2)

vector<Example> * hash = new vector<Example>(size);表达式将初始化名为hash的局部变量,而不是hash_table::hash成员(未初始化)。