比较类中两个对象之间的数据

伦纳克

因此,我创建了一个类,然后构造该类的两个单独的实例:

disc discOne; // Construct objects
disc discTwo;

类的声明是通过头文件单独完成的:

class disc
{
public:
    disc();
    ~disc();
    void changeRadius(short);
    void throwDisc(short, short);
    void printLocation() const;
    void printInfo() const;
private:
    short radius;
    short xlocation;
    short ylocation;
};

例如,我可以使用printInfo()和changeRadius()函数,但是如何比较(例如)这两个对象之间的半径?我想做些比这更复杂的事情,但是如果我了解基本知识,我想尝试一下。

我遇到的问题是,我过去曾经使用过结构(如果是这种情况),我会简单地去:

discOne.radius > discTwo.radius

或类似的东西。但是,该类的语法调用了与该类绑定的函数。很抱歉出现这个问题,但我在表达它时遇到了麻烦-可能是为什么我一直难以通过自己在互联网上搜索来找到任何指南的原因。

轨道轻赛

您可以在类中添加一个“ getter”(例如short getRadius() const),通过它可以获取一个值进行比较:discOne.getRadius() < discTwo.getRadius()

或者,您可以operator<disc自身添加重载,并让其执行半径之间的比较。但是,只有在半径是光盘的唯一属性时才有意义(不是,半径也存在),并且比较半径等效于比较光盘(而且我不相信这是合乎逻辑的) )。

除此之外,还有各种各样的笨拙解决方案,例如添加bool radiusIsLesserThatThisOtherDiscsRadius(const disc& otherDisc) const成员函数。

但是,该类的语法会调用与该类绑定的函数

实际上,这是不正确的。C ++没有“结构”,因此也struct引入了一个类,discOne.radius > discTwo.radius如果radius不是私有数据成员,它在这里也可以正常工作但是,作为私有数据成员是合适的。

struct disc
{
public:
    disc();
    ~disc();
    void changeRadius(short);
    void throwDisc(short, short);
    void printLocation() const;
    void printInfo() const;
private:
    short radius;
    short xlocation;
    short ylocation;
};

// ^ Exactly the same thing; your approach still won't work, for the same reason

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章