命令模式在C ++中

时间:2014-11-15 22:08:55

标签: c++ pointers design-patterns command

所以我正在尝试学习C ++的命令模式,我不确定如何绑定我的命令。 我当前的代码有我的输入处理程序和命令,但我不知道如何绑定它们。我一直在 “错误:'命令'是'UpCommand'无法访问的基础。”

InputHandler.h

#ifndef INPUTHANDLER_H_INCLUDED
#define INPUTHANDLER_H_INCLUDED
#include "Command.h"

class InputHandler
{
public:
    void handleInput();

    //Bind Buttons Here

private:
    Command* buttonW;
    Command* buttonA;
    Command* buttonS;
    Command* buttonD;
};

#endif // INPUTHANDLER_H_INCLUDED

这是我的Command.h

Command.h

#ifndef COMMAND_H_INCLUDED
#define COMMAND_H_INCLUDED
#include <iostream>

class Command
{
public:
    virtual ~Command() {}
    virtual void execute() = 0;
};

class UpCommand : Command
{
    virtual void execute() {std::cout << "UP";}
};

class DownCommand : Command
{
    virtual void execute() {std::cout << "DOWN";}
};

class LeftCommand : Command
{
    virtual void execute() {std::cout << "LEFT";}
};

class RightCommand : Command
{
    virtual void execute() {std::cout << "RIGHT";}
};

#endif // COMMAND_H_INCLUDED

我无法弄清楚如何将InputHandler中的指针绑定到指令的子命令。任何人都可以向我解释它是如何完成的吗?

1 个答案:

答案 0 :(得分:2)

您需要使用公共继承而不是私有。可以将class更改为struct,也可以说class WTFCommand : public Command

这就是错误,&#34;基类无法访问,&#34;装置