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

前端之家收集整理的这篇文章主要介绍了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

猜你在找的C&C++相关文章