C++中的命令模式

Command Pattern In C++

本文关键字:模式 命令 C++      更新时间:2023-10-16

所以我正在尝试学习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

这是我的命令。

命令.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

我不知道如何将输入处理程序中的指针绑定到子命令以获取方向。谁能向我解释一下它是如何完成的?

您需要使用公共继承而不是私有继承。 要么将class更改为到处都是struct,要么说class WTFCommand : public Command.

这就是错误"基类不可访问"的含义。