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 _MHO

    weiterer 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.


Anmelden zum Antworten