2014-11-15 59 views
1

所以我想學習C++的命令模式,我不確定如何綁定我的命令。 我目前的代碼有我的輸入處理程序和命令,但我不知道如何綁定它們。我不斷收到 一個「錯誤:'命令'是一個'UpCommand'的無法訪問的基礎」。命令模式在C + +

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到子命令的方向。任何人都可以向我解釋它是如何完成的?

回答

2

您需要使用公有繼承而不是私有繼承。無處不在更改classstruct或者說class WTFCommand : public Command

這就是錯誤,「基類不可訪問」的意思。