「order」というクラスと、「orderbook」という別のクラスがあります。
オーダーブックには、注文のリストが含まれています。私がやりたいことは、注文の特定の値 (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();
};