如何将对象插入集合中

时间:2013-11-26 00:20:30

标签: c++

我正在尝试将一个对象插入一个集合中,我重载了'<'操作者:

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)'的未定义引用

build / Debug / GNU-Linux-x86 / main.o:在函数`std :: less :: operator()(domino const&amp;,domino const&amp;)const':

/ usr / include / c ++ / 4.6 / bits / stl_function.h:236:对`domino :: operator&lt;(domino const&amp;)const'的未定义引用

collect2:ld返回1退出状态

1 个答案:

答案 0 :(得分:3)

您的编译器抱怨找不到采用两个整数的构造函数的实现。即使你把它留空,你也需要实际定义那个构造函数。

例如:

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

在课堂之外,您可以直接在课堂上定义:

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