티스토리 뷰

포인터를 공부했을때는 "많아도 이차원 포인터 이상을 쓸 일이 없겠지" 라는 생각을 한적이 있다. 얼마전까지도 그렇게 생각했었고 복잡한 포인터는 쓸 일이 없을꺼야 라고 얼마전까지 생각했었다.

하지만 어느 프로젝트를 진행중에 "이차원 포인터 배열의 포인터"를 한 함수에서 반환을 하고, 다른 함수에서 인자로 받는 코드를 작성해야 하는 경우가 발생했었다.
(이런식의 코딩은 해본적이 없어서 금방 코드가 작성되지 않았던..;;)

하지만 함수를 작성하고나서 생각한것은.. "이건 객체지향이 아니자나!!" _no

class CReceive
{
public:
  void ReceiveFunction(void* in)
  {
    m_data = (DataType* (*)[10][10])in;
  }

private:
  DataType* (*m_data)[10][10];
};

class CSend
{
public:
  void* SendFunction()
  {
    return (void*)m_data;
  }
private:
  DataType* m_data[10][10];
};

int main()
{
  CSend s;
  CReceive r;
  r.ReceiveFunction(s.SendFunction());

  return 0;
}


 
" DataType*(*)[10][10] " 이런식의 코딩이 가능하다는것을 알아냈다는것에 의의를 두자. (라고 자위하고 있다)

댓글
  • 프로필사진 selfi 그때 질문드린 stl 인자가 class일때
    그 class내부 인자를 참조하는 알고리즘 함수를 사용했을때
    함수 오버로딩 하는거요..

    보니까 오버로딩 문제가 아니라 *max_element에서 가져온 값을 캐스팅 해주었어야
    했던건데.. 거의 저정도와 동급으로 캐스팅을 해주어야 하더군요.

    흠.. 좀 불만이었어요; 오버로딩을 쓰면 stl의 <algorithm> 의 대부분 함수는
    반환값에 복잡한 캐스팅이 붙어야 하더군요. (인자의 클래스가 여러번 추상화가 된 상태라)
    분명 이런것들에 불만을 가진 분들이 많을 것 같은데
    그거에 대해 언급한 글들을 찾지 못했네요.



    포인터는.. 확실히 2개까지는 어떻게 꼬아놔도 직관적으로 이해가 되는데..
    3개부터는 아무리 쉬워도 이해가 바로 오질 않습니다.. 생각을 해봐야 하는 ㅡㅡ..
    2007.09.20 00:55
  • 프로필사진 Favicon of http://mastojun.net BlogIcon Mastojun 음.. 그거에 대한 언급이 없다면..
    혹시 초고수만 아는 쉽게 해결가능한 방법이 숨어있는건? +_+..
    ...

    아니면 고수들은 "이것쯤은 쉽지 뭐~ =_=" 라고 생각하는건지도 orz..
    2007.09.20 10:27
댓글쓰기 폼