所以我正在为一个类创建一个封闭哈希哈希表,我有一个结构
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在任何地方)
答案 0 :(得分:2)
vector<Example> * hash = new vector<Example>(size);
表达式将初始化名为hash
的局部变量,而不是hash_table::hash
成员(未初始化)。