2013-11-26 4 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: неопределенная ссылка на `домина :: домино (междунар, Int)»

сборки/Debug/GNU-Linux-x86/main.o: в функции `std :: less :: operator() (domino const &, domino const &) const ':

/usr/include/c++/4.6/bits/stl_function.h:236: не определено ссылка на `домино :: оператора < (домино сопзЬ &) Const»

collect2: состояние Л.Д. возвращается 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 */ 
}; 
Смежные вопросы