조건에 따라 리턴타입이 다른 함수 만들기?
글쓴이: jinserk / 작성시간: 화, 2009/12/15 - 5:16오후
예를 들어서,
template <typename T> class A { A<T>* t1_ptr; T* t2_ptr; bool flag; public: (T1& or T2&) operator[](int idx) { if (flag) return t1_ptr[idx]; else return t2_ptr[idx]; }
위와 같은 클래스가 있다고 할때요.
멤버함수의 리턴 타입을 내부 조건에 따라 다르게 주어야 할 필요가 생겼습니다.
operator[] 가 unitary parameter 라서 function overriding 도 못할 듯 싶구요.
뭔가 좋은 꽁수가 없을까요?
Forums:
복합체 패턴(composite
복합체 패턴(composite pattern)을 써봤습니다.
그런데 제가 코드의 의도를 잘 파악했는지 모르겠습니다.
이런 걸 의도하신 것 맞습니까?
감사합니다.
직접 코딩까지 해주시니 정말 감사드립니다.
원래 의도는 아래와 같은 코드였습니다.
올려주신 코드와 제 의도한 코드를 놓고 비교해보니,
저는 A 의 하위를 1차원 벡터로 생각했던 것에 비해
올려주신 코드는 하위를 원소 하나하나로 생각하는데 차이가 있는 듯 합니다.
생각해보니 캐스트연산자를 적절히 쓰면 될것도 같네요.
좋은 힌트를 주셔서 정말 감사합니다.
Leo.
댓글 달기