Klassen - Funktion erkennt private Variable nicht
-
Hallo,
die Variablen m1, m2 werde in den Funktionen hash_f1, hash_f2 nicht erkannt als klasseninterne Variablen. Warum? Ich übersehe leider oft auch ganz einfache Sachen, deswegen wäre ein objektiver Blick von jemand anderem sehr hilfreich.
Danke#include <vector> using namespace std; class cuckoo_hashing { public: cuckoo_hashing(); int insert(int key); int hash_f1(int key, int m1); int hash_f2(int key, int m2); private: vector <int> v1; vector <int> v2; int m1, m2; }; cuckoo_hashing::cuckoo_hashing() { m1 = 17; m2 = 9; v1.reserve(m1); v2.reserve(m2); } int cuckoo_hashing::insert(int key) { int index = hash_f1(key, m1); return key; } int hash_f1(int key) { return ((4*key+7)%m1); //Warum kein Zugriff??? } int hash_f2(int key) { return ((4*key+7)%m2); }
-
schau dir mal die Deklaration der Fkt an! Außerdem fehlt bei der Definition der Methoden hash der Klassenname cuckoo_hashing::
XLanae schrieb:
Ich übersehe leider oft auch ganz einfache Sachen
int hash_f1(int key, int m1);//was soll denn m1 in der Parameterliste??? int hash_f2(int key, int m2);//analoge Frage???? int hash_f1(int key) { return ((4*key+7)%m1); //Warum kein Zugriff??? } int hash_f2(int key) { return ((4*key+7)%m2); }
[/code]
-
#ifndef _MHO
#define _MHOweiterer Vorschlag: wie wäre es mit:
int hash_f1(int)const; int hash_f2(int)const; ... int cuckoo_hashing::hash_f1(int key)const {...}
da das aktuelle Objekt nicht verändert werden soll
#endif
-
Danke an alle! Ich wußte, dass ich irgendwo geschludert habe, aber jetzt ist es mir wie Schuppen von den Augen gefallen.