Все - я проверил существующие темы для обсуждения и / или вопросы по этому вопросу, и, похоже, никто не решает эту проблему.Отсюда и постить этот вопрос.Рад, что вас сослали на существующую ссылку, которая, возможно, уже решала эту проблему, если бы я ее упустил.
Ниже приведен мой фрагмент кода:
class MyBook{
public:
MyBook(): bidPrices(10, 0.0),
askPrices(10, 0.0),
bidSizes(10, 0),
askSizes(10, 0) {}
std::vector<double> bidPrices;
std::vector<double> askPrices;
std::vector<int> bidSizes;
std::vector<int> askSizes;
};
// Forward declaration
std::unordered_map<std::string, std::unique_ptr<MyBook>> myBookMap;
// Overload << to print.
std::ostream&* operator<<(std::ostream& os, MyBook& mbk)
{
os << "bid price: " << mbk.bidPrices[0] << " "
<< "bid size: " << mbk.bidSizes[0] << " "
<< "ask price: " << mbk.askPrices[0] << " "
<< "ask size: " << mbk.askSizes[0] << endl;
return os;
}
Позже внутри main ():
std::unordered_map<std::string, std::unique_ptr<MyBook>>::iterator it = myBookMap.begin();
while (it != myBookMap.end())
{
std::cout << it->first;
std::cout << it->second;
}
Во время компиляции я вижу ошибку "error: not match for 'operator <<" ".</p>
Возможно, это не могло быть из-за различий в типах данных между размерами и ценами, и даже если это так, я не понимаю, как я могу использовать шаблон для этого, когда я передаю объект(mbk) в противоположность вектору (вектор int против двойного вектора) в качестве аргумента оператора << перегружающей функции. </p>
Спасибо за любые идеи.Рад быть распятым, хотя я все еще новичок.
С наилучшими пожеланиями.