gpt4 book ai didi

c++ - 运算符重载 (==)

转载 作者:行者123 更新时间:2023-11-30 00:36:03 25 4
gpt4 key购买 nike

我在这方面遇到了一些困难。我已经确定我需要为我的个人项目重载此运算符。使用以下行是必需的:

if(playerVec[i] == 0)

播放器类有多个数据成员,用于计算一个特定的数据成员 mInitiative。这是我要检查我的 if 条件的那个。这是我重载它的尝试:

bool operator==(const Player& lhs) const {
return mInitiative == lhs.mInitiative;
}

看起来很好,但错误仍然存​​在。如果我想将该特定玩家数据与一个整数(在本例中为 0)进行比较,我该怎么做?我的方法有什么错误?

编辑:我试过:

 bool operator==(const Player& lhs, int rhs) const {
//...
}

但是编译器说这个函数的参数太多了。为什么是这样? == 不应该带两个吗?

谢谢!

最佳答案

重载相等运算符有两种方法:将其声明为成员,接受一个参数(右轴);或者将其声明为全局变量,使用两个参数(lhs 和 rhs)。因为你的 lhs 是一个 Player,而你的 rhs 是一个整数,这里有两种定义它的方法:

// declared inside Player class as a member
bool operator == (int rhs) const
{
return mInitiative == rhs;
}

// can also be declared inside Player class, but is not a member due to friend keyword
friend bool operator == (Player const& lhs, int rhs)
{
return lhs.mInitiative == rhs;
}

这就把以这种方式重载运算符的风格考虑放在一边了。

关于c++ - 运算符重载 (==),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17126279/

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