Alors je crée une table de hachage-hachage fermé pour une classe et j'ai une structureC++ erreur de segmentation lors déréférencement d'un pointeur vers un vecteur de structures
struct Example {
string key;
string data;
Example() { key = "000"; }
};
et une classe qui contient un membre qui pointe à un vecteur de structures, un constructeur, et une fonction que j'utiliserai pour illustrer le problème.
class hash_table {
private:
vector<Example>* hash;
public:
hash_table(int size);
void dummy_method();
};
Il est prévu d'allouer dynamiquement le nombre de structures dans le vecteur en fonction de l'entrée utilisateur/fichier.
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;
}
le code ci-dessus apparaît pour initialiser les 10 membres, car il imprime « 000 » dix fois.
cependant, une fois que j'essaie en appelant dummy_method-
void hash_table::dummy_method() {
cout<<(*hash)[0].key<<endl;
}
Je reçois une erreur de segmentation
Je suis sûr que ce soit même pas la bonne façon de le faire, mais je J'ai regardé/bricoler pour toujours et je n'arrive pas à trouver une solution. Je dois absolument utiliser un pointeur vers un vecteur de structures, et je suis sûr que je suis censé allouer dynamiquement chacune de ces structures (d'une certaine façon). Merci pour toute aide.
(aussi, oui, nous avons fait d'utiliser l'espace de noms, donc pas std partout)
Vous devez stocker un vecteur et non un pointeur sur un vecteur. Cela réduira la portée des bogues. – juanchopanza
Qu'est-ce que 'htable' et comment est-il défini? Veuillez publier un exemple de code complet reproduisant le problème que vous posez. Sinon, il est difficile de donner des réponses utiles. – emlai
désolé, htable est du plus grand programme. J'ai copié les fonctions du plus grand programme à un plus petit afin d'isoler le problème. Je l'ai édité pour refléter le bon code. Pour le moment, il s'agit d'un programme complet, donc tous les problèmes devraient être isolés. –