OrderBookHnadler 클래스의 오더북 데이터(BUY_map, SELL_map)에 OrderProcessor 가 접근해야 하는 상황
std::map<double, double>* OrderBookHandler::getBUY_map1()
{
return &BUY_map;
}
std::map<double, double> buy_map = *orderBookHandler.getBUY_map1();
std::map<double, double>* buy_map = orderBookHandler.getBUY_map1();
포인터 위치에 따라 원래 데이터 값을 변경 가능 유무가 달라진다.
void OrderBookHandler::getBUY_map2(std::map<double, double> *buy_map)
{
buy_map = &BUY_map;
}
std::map<double, double> *buy_map2;
orderBookHandler.getBUY_map2(buy_map2); // call by pointer
void OrderBookHandler::getBUY_map3(std::map<double, double> &buy_map)
{
buy_map = BUY_map;
}
std::map<double, double> buy_map3;
orderBookHandler.getBUY_map3(buy_map3); // call by reference
그럼에도 불구하고 C++에서 레퍼런스를 도입한 이유가 있습니다.
되도록 레퍼런스로 가져오도록 합시다.