0

我有一个名为“订单”的课程,还有一个名为“订单簿”的课程。

订单簿包含订单列表。我想做的是查找订单簿中是否已经存在某个订单值(order.security)。

为此,我创建了一个迭代器,它应该循环遍历列表以查找该值是否存在。但是我一定在某处做错了,因为我收到以下 g++ 错误:

错误:'__first.std::_List_iterator<_Tp>::operator*() == __val'中的'operator=='不匹配|

注意:功能尚未完成

void matchOrder(order &orderEntry, orderbook &genericBook);


void fillBook(order &orderEntry, orderbook &bookBUY, orderbook &bookSELL)
{
    if (orderEntry.side == "S")
        {
            //Check if any buy can be fulfilled
            matchOrder(orderEntry, bookSELL);
        }
}

void matchOrder(order &orderEntry, orderbook &genericBook)
{
    //scan book, if find a matching SECURITY, check order type and quantity (and price)

    list<order>::iterator pos;

    pos = find (genericBook.myList.begin(), genericBook.myList.end(), orderEntry);

    if (pos !=  genericBook.myList.end())
        cout << "\n\n   FOUND ONE!!!!!";
}

供参考,以下是我的订单类:

class order{

public:
    void getOrderData(int j, DATA fullData);

    string security;
    string type;
    int quantity;
    double price;
    string name;
    string side;
};

和我的订单簿类:

class orderbook
{

public:

    list<order> myList;
    list<order>::iterator it;
    void printItOut();

};
4

1 回答 1

0
pos = find (genericBook.myList.begin(), genericBook.myList.end(), orderEntry);

为了使它find工作,genericBook.myList需要某种方法来检查两个orders 是否相等。它通过使用operator ==. 您的order班级应该提供此运算符以使 find 正常工作。

您可以通过重载== operatorfororder类来解决它。

于 2013-04-04T21:07:35.060 回答