저는 C++에 좀 새로운 것 같습니다. 2 클래스가 상속하는 추상 클래스 (순수 가상)가 있습니다. 각각의 파생 클래스는 다른 STL 컨테이너 (배열 대 맵)에서만 유사한 데이터를 보유합니다. 예를 들어 STL 요소의 추가를 수행하기 위해 기본 클래스의 연산자를 오버로드하고 있습니다. 어떤 유형인지에 관계없이 STL의 요소를 반복 할 수 있기를 원합니다.다형성의 일반 STL 반복자
일반 이터레이터에서 며칠 동안 검색했지만 그와 같은 항목은 있지만 찾을 수 없습니다.
아무 것도 할 수 없어 너무 공유 할 코드가 없습니다. 아마도 기본 클래스에 STL 컨테이너를 나타내는 템플릿 변수를 보유한 다음 연산자에서 iterator를 가져올 수 있지만 다시는 확실하지 않은 것으로 생각했습니다.
protected:
template<class T>
T gStlContainer;
다음
gStlContainer::iterator<double> it;
분명히 작동하지 않았다 접근.
제안 사항? 감사합니다.
편집 : 예제를 사용하여 더 잘 설명해 보도록 편집 중입니다. 기본 (추상) 클래스에서 + 연산자를 오버로드하고 있는데, STL 컨테이너의 각 요소를 반복하고 다른 요소 (예 : )에 추가한다고 가정합니다. STL로이 배열이 있다고 가정 해 보겠습니다.
arr = [0,1,2,3] // Say it's stored in Derived2 class
arr = [4,5,6,7] // Say it's stored in Derived3 class
이러한 배열은 각각 파생 클래스 중 하나에 저장됩니다. 내가
Derived1 = Derived2 + Derived3;
을하고있을 때 다음 Derived1에 저장할 것
arr = [4,6,8,10]
는 이제 좀 더 분명 바랍니다. 문제는 그것이 항상 배열이 아니며, 예를 들어 배열과지도를 결합 할 수 있다는 것입니다. 그래서 일반 반복기 또는 일부 솔루션이 필요합니다.
감사합니다.
기본 클래스의 인터페이스는 무엇입니까? (원하는 모양의 제한된 버전 표시). 나는 또한 사용해야합니까 표준의 버전을 유의 ... 기본 클래스의 인터페이스를 정의하고 템플릿 인수로 컨테이너의 형식을 취하는 하나의 템플릿 파생 된 유형을 구현 보는 것 (C++ 03/C++ 11)과 같이 라이브러리를 사용할 수 있는지 여부를'부스트 : function' 또는'표준 : function'합니다.알고리즘의 단일 구현을 제공 할 필요가없고 각 파생 된 유형이 반복을 수행해야하는 경우 다시 훨씬 더 간단 할 수 있습니다. –