2012-12-01 4 views
0

해시 테이블 클래스 및 헤더를 작성했지만 main에 생성 할 수 없습니다. "적절한 기본 생성자를 사용할 수 없음"을 제공합니다. 그 원인은 무엇입니까? 내 헤더생성자를 만들 때 사용할 수있는 적절한 기본 생성자가 없습니다.

생성자 : HashTable.h 내 cpp에있는

explicit HashTable(const HashedObj & notFound, int size = 101); 
     HashTable(const HashTable & rhs) 
     : ITEM_NOT_FOUND(rhs.ITEM_NOT_FOUND), 
     array(rhs.array), currentSize(rhs.currentSize) { } 

생성자 : HashTable.cpp

HashTable<HashedObj>::HashTable(const HashedObj & notFound, int size) 
    : ITEM_NOT_FOUND(notFound), array(nextPrime(size)) 
{ 
    makeEmpty(); 
} 

그리고 나는 나의 주에 다음 코드를 할 노력하고있어 :

HashTable <int> * hash = new HashTable<int>(); 
+0

독자를 생각해보십시오 : 외우는 소리는 사용하지 마십시오. 대문자 사용법. 음, 매크로를 제외하고는 매크로를 사용하지 마십시오. –

답변

1
HashTable <int> * hash = new HashTable<int>(); 

인수를 취하는 생성자. 그러나 여기에서는 생성자에 인수를 전달하지 않습니다. 대신 클래스에없는 매개 변수없는 (기본) 생성자를 사용하고 있습니다.

클래스에서 생성자 (인수를 사용하는)를 정의한 경우 컴파일러에서 기본 생성자를 생성하지 않습니다. 스스로 정의해야합니다.

+0

그러나 다음과 같은 매개 변수를 전달하려고하면 : "= 새로운 HashTable (1,3)" "LNK2019 : 해결되지 않은 외부 기호"public : __thiscall HashTable :: HashTable (int const &, int) " ? _ 0? $ HashTable @ H @@ QAE @ ABHH @ Z) 함수 _main "오류에서 참조됩니다. – Tugkan

+0

@Tugkan : 인수로 두 개의 'int'를 생성하는 생성자가 있습니까? 왜 생성자의 매개 변수 * 유형 *을 보지 않고 생성자가 인수로 취할 수있는 것을 찾으십시오. – Nawaz

관련 문제