class 객체간 데이터 접근 1

tahn·2023년 2월 10일
1

C++

목록 보기
6/8
post-thumbnail

처한 문제

OrderBookHnadler 클래스의 오더북 데이터(BUY_map, SELL_map)에 OrderProcessor 가 접근해야 하는 상황

해결 방법

1. 매개변수 없이 하는 방법

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();

포인터 위치에 따라 원래 데이터 값을 변경 가능 유무가 달라진다.

2. 매개변수로 담아오는 방법 (call by pointer)

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

3. 레퍼런스로 가져오는 법 (call by reference)

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++에서 레퍼런스를 도입한 이유가 있습니다.

되도록 레퍼런스로 가져오도록 합시다.

그 외 다른 방법 (그러나 좋지 않은 방법)

  • 데이터의 전역 선언
  • class 내 데이터를 private 에서 public 으로 변경
  • 상속 (데이터를 가진 클래스를 접근해야 하는 클래스가 상속받음)
profile
html 개발자

0개의 댓글