идентификатор & quot; а & quot; не определено в переполнении стека

Я пишу код 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);

1

Решение

Первый, никогда определить переменную с одним символом, который вы будете использовать много, или в классе. Если вы хотите найти его в коде, это будет невозможно — вы остановите один символ «а». Назовите это как-нибудь читабельное.

Во-вторых, ВЧ это не член класса HASH, он не видит частный переменные других классов.

  1. добавить в общественности часть HASH учебный класс
    int HF (int key);
  2. изменить процедуру на
    int HASH :: HF (int key) {
    и это будет работать
6

Другие решения

добавлять int HF в публичный раздел вашего класса и в файле hash.cpp использование int HASH:HF вместо int hash,
Я заметил небольшую ошибку: ваша функция HF не возвращает значение — добавьте оператор возврата в HF функцию.

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector