【问题标题】:Command Pattern In C++C++ 中的命令模式
【发布时间】:2015-01-13 02:27:08
【问题描述】:

所以我正在尝试学习 C++ 的命令模式,但我不确定如何绑定我的命令。 我当前的代码有我的输入处理程序和命令,但我不知道如何绑定它们。我不断得到 “错误:'Command' 是 '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 中的指针绑定到子命令以获取方向。谁能给我解释一下它是怎么做的?

【问题讨论】:

    标签: c++ pointers design-patterns command


    【解决方案1】:

    您需要使用公共继承而不是私有。要么在任何地方将class 更改为struct,要么说class WTFCommand : public Command

    这就是错误“无法访问基类”的含义。

    【讨论】:

      猜你喜欢
      • 2011-07-11
      • 2012-10-24
      • 2014-06-01
      • 1970-01-01
      • 2010-12-02
      • 2016-08-25
      • 2017-09-18
      • 2010-11-01
      • 1970-01-01
      相关资源
      最近更新 更多