我收到错误#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接口的类。我相信我已经完成了所有这些,但出于某种原因我得到了这个错误。
答案 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是等边形状,您可以简单地比较八角形物体的面积