从主

时间:2017-04-18 20:12:44

标签: c++ templates hash

嘿伙计们,所以我正在为我的班级用C ++编写Hash程序。我正在为我的头文件使用模板T类,当我尝试从main调用类构造函数时,它给了我一个未声明的标识符并输入'int'意外错误。这是我的HashTable.h文件:

#pragma once
#include "Record.h"
#define MAXHASH 1000
#ifndef HASHTABLE_H
#define HASHTABLE_H
using namespace std;

template <class T> class HashTable
{
public:
    HashTable();
    ~HashTable();
    bool insert(int, T, int&);
    bool remove(int);
    bool find(int, T&);
    float alpha();
private:
    int key;
    T value;
 };

#endif

这是我的主要内容:

#include "HashTable.h"
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;

int main()
{
    HashTable<int> *test = new HashTable<int>();
    return 0;
}

这里也是.cpp文件中的构造函数:

#pragma once
#include "stdafx.h"
#include "HashTable.h"
#include "Record.h"
#define HASHTABLE_CPP
#ifndef HASTABLE_CPP


template <class T>
HashTable<T>::HashTable()
{
    Record hashArray = new Record[MAXHASH];
    for (int i = 0; i < MAXHASH; i++)
    {
        hashArray[i]->key = 0;
        hashArray[i]->value = NULL;
    }
}

我得到的具体错误是:

Error C2062   type 'int' unexpected identifier 

Error C2065   'HashTable': undeclared identifier      
     

两个错误都指向main中的调用行。

这很难,因为在我可以让这个测试哈希工作之前我无法测试我的程序。关于如何解决这个问题的任何意见都很棒!

1 个答案:

答案 0 :(得分:0)

旧的Microsoft应用程序文件扩展名界面&#34; stdafx.h&#34;如果使用预编译的头文件,则必须是列出的第一个指令。它实际上效果最好,因为VS期待它......我总是使用它。