所以,我创建了一个类,然后构造了该类的两个独立实例:
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