monster* monster1 = new monster("Frankenstein", "The Ugly One", BackYard);
Player* player1 = new Player("Corey", "The Chosen one", Atrium);
Player* player2 = new Player("Darth Vader", "The Evil One", Atrium);
vector<Agent*> agents;
agents.push_back(monster1);
agents.push_back(player1);
agents.push_back(player2);

while (true)
{
    vector<Agent*>::iterator it;

    for (it = agents.begin(); it < agents.end(); it++) {
        it->act();                                            // Error here
        if (it->act() == false)                               // Error here
            return 0;
    }

    ...
}


我收到一个错误消息:


  成员引用基本类型“代理*”不是结构或联合。


我真的不明白为什么这对导航向量无效。

最佳答案

it指向Agent*而不是Agentit->将尝试在指针而非对象上调用函数。您需要做的是取消引用迭代器,然后调用成员函数。

(*it)->act();

关于c++ - C++ vector 迭代错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34297114/

10-14 18:02