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++类中,有6个默认成员函数: 构造函数 析构函数 拷贝...
#pragma once // 1. 设计一个不能被拷贝的类/* 解析:拷贝只会放生在两个场景中:拷贝构造函数以及赋值运...
C类型转换 C语言:显式和隐式类型转换 隐式类型转化:编译器在编译阶段自动进行,能转就转,不能转就编译...
//异常的概念/*抛出异常后必须要捕获,否则终止程序(到最外层后会交给main管理,main的行为就是终止) try...
#pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问...
目录&lt;future&gt;future模板类成员函数:promise类promise的使用例程:packaged_task模板类例程...