gpt4 book ai didi

c++ - C++中的命令模式

转载 作者:行者123 更新时间:2023-11-30 03:59:23 25 4
gpt4 key购买 nike

所以我正在尝试学习 C++ 的命令模式,但我不确定如何绑定(bind)我的命令。我当前的代码有我的输入处理程序和命令,但我不知道如何绑定(bind)它们。我不断得到一个“错误:‘Command’是‘UpCommand’不可访问的基础”。

输入处理器.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

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

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

关于c++ - C++中的命令模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26951298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com