私はC++には新しく、YouTubeからハッシュテーブルプロジェクトを再現しようとしています。 main.cppとhash.cppという新しいヘッダファイル "hash.h"を使って新しいプロジェクトを作成するとき、main.cppをコンパイルして実行すると、私の "ハッシュ"があいまいな私の考えは、私のハッシュがstd :: hashと衝突したことです。それはエラーの原因ですが、私はそれを修正する方法はあまりよく分かりません。助けてください!これは、コード::ブロックで行われます:)リファレンスがあいまいでC++
main.cppに
#include <iostream>
#include <cstdlib>
#include <string>
#include "hash.h"
using namespace std;
int main(){
int index;
hash hashObj;
index = hashObj.Hash("Amanda");
cout << index << endl;
return 0;
}
hash.h
#include <iostream>
#include <cstdlib>
#include <string>
#ifndef HASH_H_INCLUDED
#define HASH_H_INCLUDED
class hash{
public:
int Hash(std::string key);
};
#endif // HASH_H_INCLUDED
hash.cpp
#include <iostream>
#include <cstdlib>
#include <string>
#include "hash.h"
int hash::Hash(string key){
int hash = 0;
int index;
index = key.length();
return index;
}
それを修正するための最良の方法は、名前空間stdを使用して 'を取り除くことで、あなたのコードではどこでも、'、および(HTTP [完全これはC++言語で存在していることを忘れてはいけ]:
これがコンパイルされます://stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice)。 –
ハッシュテーブルが必要な場合は、C++標準ライブラリの 'std :: unordered_map'を使用してください。 –
これは面白いハッシュ関数です。 PHPはその機構を当時の関数名にハッシュするために使用しました –