저는 C++에 매우 익숙하며 YouTube에서 해시 테이블 프로젝트를 재현하려고합니다. 새 헤더 파일 "hash.h", main.cpp 및 hash.cpp를 사용하여 새 프로젝트를 만들 때 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;
}
를 해결하는 가장 좋은 방법은 네임 스페이스를 사용하여 표준 '을 제거하는 것입니다 코드에서 사방', 및 HTTP ([완전이는 C++ 언어로 존재한다는 것을 잊지] :
이 컴파일 : //stackoverflow.com/questions/1452721/why-is-using-namespace-std-considered-bad-practice). –
해시 테이블이 필요한 경우 C++ 표준 라이브러리에서'std :: unordered_map'을 사용하십시오. –
흥미로운 해시 함수입니다. PHP는이 메커니즘을 다시 함수 이름을 해시하는 데 사용했습니다. –