2013-11-26 2 views
1

내가 집합으로 개체를 삽입하기 위해 노력하고있어, 나는이 '<'연산자를 오버로드 :집합으로 개체를 삽입하는 방법

class domino { 

public: 
domino(); 
domino(int l, int r); 

void SetRightDots(int rightDots); 
int GetRightDots() const; 

void SetLeftDots(int leftDots); 
int GetLeftDots() const; 

string toString() const; 
bool operator<(const domino &d) const; 
bool operator==(const domino &d) const; 

private: 
int leftDots; 
int rightDots; 

}; 


int main(int argc, char** argv){ 
set<domino> sd=set<domino>(); 
set<domino>::iterator ite; 

for (int i = 1; i <= 6; i++) { 
    for (int j = i; i <= 6; j++) { 
     sd.insert(domino(i,j)); 
    } 
} 

} 

하지만, 난 여전히 다음과 같은 오류 얻을 :

/home/joju/NetBeansProjects/CppApplication_1/main.cpp:51 : 'domino :: domino (int, int)'에 대한 정의되지 않은 참조

빌드/디버그/GNU-Linux-x86/main.o : 함수 `std :: less :: operator() (domino const &, 도미노 const &) const ':

/usr/include/c++/4.6/bits/stl_function.h:236 : 도미노 :: 연산자 < (도미노 CONST &) CONST`로 정의 참조

collect2 : LD 반환 1 종료 상태

+1

가 실제로'domino' 클래스의 구현이 있습니까? (p.s.는 Domino 클래스의 이름 지정을 제안합니다) – John3136

+1

'domino'의 구현을 링크해야합니다.'domino.cpp'에 구현합니까? – billz

답변

3

컴파일러가 두 개의 정수를 사용하는 생성자 구현을 찾지 못한다고 불평합니다. 비어있는 경우에도 실제로 생성자를 정의해야합니다.

예를 들어

: 클래스의

domino::domino(int a, int b) { /* do something */ } 

외부 또는 클래스에 직접 정의 할 수 있습니다 :

class domino { 
    /* stuff */ 
    domino(int l, int r) { /* do something */ } 
    /* stuff */ 
}; 
관련 문제