我希望能够使用sort函数对“card”类的向量进行排序:
struct Card
{
int Number;
char Suit;
};
vector<Card> hand;
std::sort (hand.begin(), hand.end());
所以我重载了&lt;卡类的运算符,所以看看这是否允许排序工作,但我在比较“数字”变量时遇到错误。 (数字未定义)。
bool operator < (const Card);
bool Card::operator < (const Card ob)
{
if (Number < ob.Number){
return true;
}
else
{
return false;
}
}
首先,我想确定这是否允许排序工作,其次,我想就如何让Num正确比较提出一些建议
答案 0 :(得分:1)
数据成员名为Number
,而不是Num
。
当你在它时,更改运算符以通过引用获取参数:
bool Card::operator < (const Card& ob)
^ THIS
最后,整个if
可以简洁地表达为
return (Num < ob.Num);
答案 1 :(得分:0)
是的,它会起作用,但您需要使用Number
bool Card::operator < (const Card& ob)
{
return (Number < ob.Number) ;
}
Number
是您在结构Card
答案 2 :(得分:0)
相应数据成员的名称是Number not Num。
运算符的正确声明和定义将显示为
bool operator < ( const Card & ) const;
bool Card::operator < ( const Card &ob ) const
{
return Number < ob.Number;
}
答案 3 :(得分:0)
您的Number
课程中有Card
个成员,而不是Num
。
重构
struct Card
{
int Number;
char Suit;
};
到
struct Card
{
int Num;
char Suit;
};
或更改函数(无论是否重构类或函数体,都按引用引用参数):
bool Card::operator < (const Card& ob)
^
use reference
{
return (Number < ob.Number) ; //this will replace correctly your if condition
^ ^
}