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

最佳答案

您需要使用公共(public)继承而不是私有(private)继承。到处将class更改为struct或说class WTFCommand : public Command

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

07-24 09:45
查看更多