因此,我试图学习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
。
这就是错误“无法访问基类”的含义。