我正在编写 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);
最佳答案
首先,永远不要用单个字符定义一个变量,你会经常使用,或者在类里面。如果您想在代码中找到它,那将是不可能的 - 您将在每个“a”字符中停止一个。将其命名为可读的。
其次,HF不是类HASH的成员,它看不到其他类的私有(private)变量。
- 添加到HASH类的public部分
int HF(int key); - 将程序更改为
int HASH::HF(int key){ ...
它将起作用
关于c++ - 标识符 "a"在 C++ 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478679/