c++ - 标识符 "a"在 C++ 中未定义

标签 c++

我正在编写 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)变量。

  1. 添加到HASH类的public部分
    int HF(int key);
  2. 将程序更改为
    int HASH::HF(int key){ ...
    它将起作用

关于c++ - 标识符 "a"在 C++ 中未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20478679/

相关文章:

c++ - 使用 C++ ifsteam 从文件读取到模板 vector

c++ - QML 绑定(bind)不更新

c++ - WinAPI 编辑控件不显示换行符

C++ 对数字字符串数组进行排序 - 比较函数不起作用

c++ - 在不先插入标准 map 元素的情况下调用函数

c++ - Flex regex.在解析开始之前替换整个字符串

c++ - 在 gtkmm 中显示 opencv cv::Mat 图像

c++ - 函数返回类型样式

c++ - 同步 : Why wont this display my Layout

c# - 面向 .NET Framework 4.0