Я пишу код C ++ для реализации универсальной хеш-функции, но она не распознает параметры, вот код:
#include <math.h>
#include <cmath>
#include "hash.h"#include <iostream>
using namespace std;
#include <string>
HASH::HASH(){
a=23;
b=88;
n=100;
p=997;
products=new product[n];
}
HASH::~HASH(){
delete []products;
}
HASH::HASH(int aa,int bb,int nn, int pp){
a=aa;
b=bb;
n=nn;
p=pp;
products=new product[n];
}int HF(int key){
int index;
int h;
h=((((a*key)+b)% p)% n);
}
в функции HF это говорит мне, что параметры a, b, n, p не определены. Я определил их в заголовочном файле следующим образом:
class HASH {
private:
int a,b,n,p;
product* products;
public:
HASH();
HASH(int aa,int bb, int nn, int pp);
~HASH();
bool insert(product s);
bool retrieve(int id,product &product);
bool updateName(int id);
bool updateCost(int id);
bool updateQuantity(int id);
bool remove(product &d);
int getNumberOfProducts();
};
int HF(int key);
Первый, никогда определить переменную с одним символом, который вы будете использовать много, или в классе. Если вы хотите найти его в коде, это будет невозможно — вы остановите один символ «а». Назовите это как-нибудь читабельное.
Во-вторых, ВЧ это не член класса HASH, он не видит частный переменные других классов.
добавлять int HF
в публичный раздел вашего класса и в файле hash.cpp
использование int HASH:HF
вместо int hash
,
Я заметил небольшую ошибку: ваша функция HF не возвращает значение — добавьте оператор возврата в HF функцию.