麻烦解释错误

时间:2018-04-12 19:33:03

标签: java arrays interface

我收到错误#include "stdafx.h" #include "iostream" #include "string" using namespace std; int main() { std::cout << "Object Oriented Pattern:\n\n"; MallardDuck Duck1; Duck1.fly(); Duck1.quack(); RubberDuck Duck2; Duck2.fly(); Duck2.quack(); std::cin.get(); return 0; }; class IFlyBehavior { public: virtual void fly(); }; class IQuackBehavior { public: virtual void quack(); }; class Duck { protected: IFlyBehavior FlyBehavior; IQuackBehavior QuackBehavior; public: void fly() { FlyBehavior.fly(); } void quack() { QuackBehavior.quack(); } }; class RubberDuck : Duck { public: RubberDuck() : Duck() { NoFly FlyBehavior; Squeak QuackBehavior; } }; class MallardDuck : Duck { public: MallardDuck() : Duck() { FlyWithWings FlyBehavior; Quack QuackBehavior; } ~MallardDuck() { }; }; class FlyWithWings : IFlyBehavior { void fly() { cout << "Flapping wings."; } }; class NoFly : IFlyBehavior { void fly() { cout << "Can't fly."; } }; class Quack : IQuackBehavior { void quack() { cout << "Quack!"; } }; class Squeak : IQuackBehavior { void quack() { cout << "Squeak!"; } }; 不确定这意味着什么或如何修复它。我很感激任何帮助。

以下是代码:

"The type Octagon must implement the inherited abstract method Comparable<Octagon>.compareTo(Octagon)"

我的目标是编写一个实现Comparable和Cloneable接口的类。我相信我已经完成了所有这些,但出于某种原因我得到了这个错误。

1 个答案:

答案 0 :(得分:1)

你需要能够将两个Octagon对象相互比较,这样才能实现Comparable,这反过来意味着你必须实现public int compareTo(Octagon octangon)方法。通过说你实现,你接受的合同说你将实现Comparable定义的每个方法。在这种情况下,方法public int compareTo(Octagon octangon)。

public int compareTo(Octagon otherOctagon)
{
    if(this.getArea() == octangon.getArea())
        return 0;
    else if(this.getArea() < octangon.getArea())
        return -1;
    else
        return 1; 
}

由于您的Octagon是等边形状,您可以简单地比较八角形物体的面积