我正在尝试使用 C++ 学习设计模式。我正在执行OReilly's Head First Design Patterns
关于鸭子问题的第一章中给出的程序。请耐心等待,这是一个很长的问题。
无论如何,我尝试创建以下 2 个接口:
class QuackBehavior
{
public:
virtual void quack() = 0 ;
};
class FlyBehavior
{
public:
virtual void fly() = 0 ;
};
现在我有一个 Duck 类,它需要具有上述 2 个类的瞬间。我正在做的是:
class Duck
{
public:
FlyBehavior flyBehavior;
QuackBehavior quackBehavior;
Duck()
{
}
virtual void display() = 0 ;
void performQuack()
{
quackBehavior.quack() ;
}
void performFly()
{
flyBehavior.fly() ;
}
void swim()
{
std::cout << "All ducks swim!\n" ;
}
};
我还创建了实现接口的类:
class Quack: public QuackBehavior
{
void quack()
{
std::cout << "QUACK!\n" ;
}
};
class FlyWithWings: public FlyBehavior
{
void fly()
{
std::cout << "I'm flying...\n" ;
}
};
同样。我创建了一个继承 Duck 类和我的 main 方法的类:
class MallardDuck: public Duck
{
public:
MallardDuck()
{
quackBehavior = new Quack() ;
flyBehavior = new FlyWithWings() ;
}
void display()
{
std::cout << "I'm a real duck\n" ;
}
};
int main(int argc, char const *argv[])
{
Duck mallard = new MallardDuck() ;
mallard.performFly() ;
mallard.performQuack() ;
return 0;
}
但是,当我编译程序时,我得到一长串错误。有人可以帮我弄这个吗?提前感谢那些真正阅读完整问题的人。