资源简介

C++ 二叉树 动物 猜想 游戏

资源截图

代码片段和文件信息

#include 
#include 

using namespace std;
class State;

class Node {
public:
    Node(State *s) : state(s) {}
    void process();
    State *state;
};

class State {
public:
    virtual void process(Node *node) = 0;
    virtual ~State() {} // Designed for inheritance
};

class QuestionState  : public State {
public:
    QuestionState(string ques Node *yes Node *no);
    virtual void process(Node *node);
protected:
    string question;
    Node *yesNode; // No need for smart ptrs here
    Node *noNode;  // But only in this particular case
};

class AnswerState : public State {
public:
    AnswerState(string a) : animal(a) {}
    virtual void process(Node *node);
protected:
    string animal;
};

void
Node::process()
{
    state->process(this);
}

QuestionState::QuestionState(string q Node *y Node *n)
  : question(q) yesNode(y) noNode(n) {}

void
QuestionState::process(Node *node)
{
    string answer;
    cout << question << “ “;
    getline(cin answer);
    if(answer == “yes“) {
        yesNode->process();
    } else {
        noNode->process()

评论

共有 条评论