在string命令上调用成员函数

时间:2016-05-28 13:58:28

标签: c++

我一直在为虚拟棋盘游戏尝试一种基于文本的命令界面。我一直在阅读成员函数作为参数,但到目前为止我所有的尝试都没有产生结果。 我的目的是模块化,这样我就可以通过在控制台中设置字符串来轻松添加命令。

这是我用来调用每个函数的函数:

void command(string in, string name, void (*fnc)())
{
    if(in == name)
    {
        (*fnc)();
    }
}

我在play()函数中调用它:

void play()
{
    string cmd;
    do
    {
        getline(cin, cmd);
        command(cmd, "print_all", &print_all);
    }
    while(cmd != "exit");
}

print_all():

void print_all()
{
    for(int i = 0; i < cards.size(); i++)
    {
        cout << cards[i].name
        << "/n Mana:" << cards[i].cost
        << "/n Attack:" << cards[i].attack
        << "/n Defense:" << cards[i].defense
        << endl;
    }
}

这是构造函数,以提供有关代码的更多信息:

public:
game()
{
    init_cards(); // This just fills the vector "cards" with data.
    play();
}

这是我的主要内容:

int main()
{
    game GAME;
    return 0;
}

出于某种原因,这是产生此错误: error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static member function to form a pointer to member function. Say '&game::print_all' [-fpermissive]|

我已尝试按照错误日志的建议将&game::print_all替换为call参数,但无效。

提前感谢您的帮助。希望这是一个简单的解决方案,我只是太盲目无法看到它。

0 个答案:

没有答案