2014-11-15 2 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

#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 

내 Command.h이다 나는에 InputHandler 내 포인터를 바인딩하는 방법을 알아낼 수 없습니다 방향에 대한 하위 명령. 아무도 그것이 어떻게 완료되었는지 설명 할 수 있습니까?

답변

2

개인 대신 공용 상속을 사용해야합니다. 어느 곳에서든지 classstruct으로 변경하거나 class WTFCommand : public Command라고 말하십시오.

이것은 "기본 클래스에 액세스 할 수 없음"이라는 오류입니다.