그래서이 클래스의 폐쇄 해시 해시 테이블을 만드는거야의 벡터에 대한 포인터를 역 참조하고 그 포인트 구성원을 포함하는 구조C++ 세그먼트 오류 구조
struct Example {
string key;
string data;
Example() { key = "000"; }
};
와 클래스를 가질 때 구조체의 벡터, 생성자, 문제를 설명하기 위해 사용할 함수에 대해 설명합니다.
class hash_table {
private:
vector<Example>* hash;
public:
hash_table(int size);
void dummy_method();
};
사용자/파일 입력을 기반으로 벡터의 구조 수를 동적으로 할당하기위한 것입니다.
는hash_table :: hash_table (int size=10)
{
//initialize vector
vector<Example> * hash = new vector<Example>(size);
//test objects
for(int i=0;i<size;i++)
cout<<(*hash)[i].key<<endl;
}
위의 코드는 "000" 열 번을 출력으로, 10 명 멤버를 초기화 나타납니다. 그러나
, 한 번 나는 세그먼트 오류를 얻을
void hash_table::dummy_method() {
cout<<(*hash)[0].key<<endl;
}
을 dummy_method- 호출하여이 시도
난이도이 작업을 수행하는 올바른 방법이 아니다 확신 해요,하지만 난 ' 영원히 찾고/땜질하고 있었고 해결책을 찾지 못하는 것 같습니다. 그러나 절대적으로 구조체 벡터에 대한 포인터를 사용해야하며, 어떻게 든 구조체를 동적으로 할당해야한다고 확신합니다 (어떻게 든). 어떤 도움을 주셔서 감사합니다.
은 (또한, 그래, 우리가 실제로 네임 스페이스를 사용해야합니다, 따라서 어떤 표준 어디서나)
벡터에 대한 포인터가 아닌 벡터를 저장해야합니다. 그러면 버그 범위가 줄어들 것입니다. – juanchopanza
'htable '이란 무엇이며 어떻게 정의됩니까? 요청한 문제를 재현하는 전체 예제 코드를 게시하십시오. 그렇지 않으면 유용한 답변을 제공하기가 어렵습니다. – emlai
죄송합니다, htable은 더 큰 프로그램에서 왔습니다. 문제를 분리하기 위해 큰 프로그램의 기능을 작은 프로그램의 기능으로 복사했습니다. 올바른 코드를 반영하도록 편집했습니다. 현재이 프로그램은 완성 된 프로그램이므로 모든 문제를 격리해야합니다. –