无法弄清楚为什么这不起作用

时间:2013-08-14 21:53:35

标签: c++

嘿伙计们我正在制作一个程序来模拟呼叫中心的队列,但我遇到了这个问题并且不明白为什么......

错误:二进制'==':找不到哪个操作符带有'agent'类型的左操作数(或者没有可接受的转换)

#include "stdafx.h"
#include "dialer.h"


dialer::dialer()
{
    //hidden
}

dialer::dialer(campaign *campaignOnDialer)
{
    this->campaignOnDialer = campaignOnDialer;
}

void dialer::tick()
{


    for(int callCount = 0; callCount <= callsOnDialer.size() -1; callCount++)
    {
        //Goes through each call in queue and ticks
        callsOnDialer.front().tick();   
        callsOnDialer.push(callsOnDialer.front());
        callsOnDialer.pop();
    }
}

void dialer::addAgent(agent newAgent)
{
    agentsOnDialer.push_back(newAgent);
}

agent* dialer::searchAgentById(int id)
{
    std::list<agent>::iterator frontIterator = agentsOnDialer.begin();
    agent foundAgent;

    while(frontIterator->getAgentId() != agentsOnDialer.end()->getAgentId())
    {
        if(frontIterator->getAgentId() == id)
        {
            foundAgent = frontIterator->getInstance();
            return &foundAgent;
        }

        else
            frontIterator++;
    }
    return NULL;
}

bool dialer::removeAgent(int id)
{
    agent* removeAgent = searchAgentById(id);   

    if(removeAgent == NULL)
        return false;

    agentsOnDialer.remove(*removeAgent);
    return true;
}

void dialer::assignNextCall()
{
    int assignedAgentId = getIdleAgentId();

    if(assignedAgentId == -1 || callsOnDialer.empty())
        return;

    int nextCallId = callsOnDialer.front().getCallId();

}

int dialer::getIdleAgentId()
{

}

1 个答案:

答案 0 :(得分:4)

问题似乎是getAgentId()类中的方法agent没有返回int;而是返回agent。除此之外,一切似乎都能够奏效。

此外,您的removeAgent(int id)功能存在轻微差异。尝试将agent* removeAgent重命名为agent* agentToRemove。即使这在技术上不应该是一个问题,但是将局部变量命名为函数也不是最好的做法。