-5

嘿伙计们,我正在开发一个程序,该程序将模拟呼叫中心的队列,但我遇到了这个问题,不知道为什么......

错误:二进制“==”:未找到采用“代理”类型的左操作数的运算符(或没有可接受的转换)

#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()
{

}
4

1 回答 1

4

问题似乎是getAgentId()您的agent类中的方法没有返回 int;而是返回一个agent. 除此之外,一切似乎都可以工作。

此外,您的removeAgent(int id)功能存在细微差异。尝试重命名agent* removeAgentagent* agentToRemove. 尽管这在技术上不应该是一个问题,但将局部变量命名为与函数相同的名称并不是最佳实践。

于 2013-08-14T21:58:00.357 回答