微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c – 比较一个类的两个对象之间的数据

所以,我创建了一个类,然后构造了该类的两个独立实例:
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(). 或者,您可以添加运算符<光盘自身过载,并让它执行半径之间的比较.然而,这只有在半径是光盘的唯一属性时才有意义(它不是 - 你也有位置),如果比较半径相当于比较光盘(我不相信这是合乎逻辑的). 除此之外,还有各种笨拙的解决方案,例如添加bool radiusIsLesserThatThisOtherdiscsRadius(const disc& otherdisc)const成员函数.

But,that Syntax for classes calls a function tied to that class

实际上,那不是真的; C没有“结构”,所以struct也引入了一个类,而discOne.radius>如果radius不是私有数据成员,discTwo.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

原文地址:https://www.jb51.cc/c/115597.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐