所以我创建一个封闭的散列哈希表一类的载体的情况下,我有一个结构C++段故障解除引用的指针结构
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)
您应该存储一个矢量,而不是指向矢量的指针。这将减少错误的范围。 – juanchopanza
什么是“htable”?它是如何定义的?请发布一个完整的示例代码,重现您所问的问题。否则很难给出有用的答案。 – emlai
抱歉,htable来自较大的程序。我将较大程序中的功能复制到较小的程序中,以便找出问题。我编辑它以反映正确的代码。截至目前,这是一个完整的程序,所以任何问题都应该被隔离。 –