所以我創建一個封閉的散列哈希表一類的載體的情況下,我有一個結構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來自較大的程序。我將較大程序中的功能複製到較小的程序中,以便找出問題。我編輯它以反映正確的代碼。截至目前,這是一個完整的程序,所以任何問題都應該被隔離。 –