我正在尝试将一个对象插入一个集合中,我重载了'<'操作者:
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退出状态
答案 0 :(得分:3)
您的编译器抱怨找不到采用两个整数的构造函数的实现。即使你把它留空,你也需要实际定义那个构造函数。
例如:
domino::domino(int a, int b) { /* do something */ }
在课堂之外,您可以直接在课堂上定义:
class domino {
/* stuff */
domino(int l, int r) { /* do something */ }
/* stuff */
};