gpt4 book ai didi

c++ - C++重载运算符<用于结构:错误的参数太多

转载 作者:行者123 更新时间:2023-12-02 10:34:37 25 4
gpt4 key购买 nike

对于作业,学生必须制作一个Card结构,以保留Card的Suit,Rank和Bitmap。该结构需要一个重载的“<”运算符来比较lhs卡的等级是否小于rhs卡并返回 bool(boolean) 值。到目前为止,这是我的Card.h文件:

#pragma once

#include "GameEngine.h"

struct Card
{

public:
//Constructor and Destructor
Card();
virtual ~Card();

//Methods
bool operator< (const Card& lhs, const Card& rhs)
{
return (lhs.m_Rank < rhs.m_Rank);
}

//Enumerations
enum class Suit
{
Diamonds,
Clubs,
Hearts,
Spades,
};

enum class Rank
{
RankAce,
RankTwo,
RankThree,
RankFour,
RankFive,
RankSix,
RankSeven,
RankEight,
RankNine,
RankTen,
RankJack,
RankQueen,
RankKing,
};

private:
//Datamembers
Bitmap *m_BmpPtr;
Rank m_Rank;
Suit m_Suit;
};

但是,operator <重载声称它具有太多参数。这不是确保一次过载可以比较lhs和rhs的正确方法吗?好像我必须将其拆分对吗?

提前谢谢了。

最佳答案

编译器认为这是一个成员函数,但成员函数运算符不能有多个参数。第一个参数隐式为*this,第二个参数为您提供的参数。

您可以通过删除第一个参数并使用*this代替lhs使其成为成员函数。否则,您可以使用惯用的解决方案并将其设置为friend:

friend bool operator< (const Card& lhs, const Card& rhs)
{
return lhs.m_Rank < rhs.m_Rank;
}

关于c++ - C++重载运算符<用于结构:错误的参数太多,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60953553/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com