嘿伙计们,所以我正在为我的班级用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中的调用行。
这很难,因为在我可以让这个测试哈希工作之前我无法测试我的程序。关于如何解决这个问题的任何意见都很棒!
答案 0 :(得分:0)
旧的Microsoft应用程序文件扩展名界面&#34; stdafx.h&#34;如果使用预编译的头文件,则必须是列出的第一个指令。它实际上效果最好,因为VS期待它......我总是使用它。