작업을 수행해야하는 장치가 있습니다. 하나의 기본 클래스 BASE
과 하위 클래스 TYPE1
이 있습니다. 각 기기는 TYPE1
의 인스턴스입니다. 이것들은 XML 구성 파일에있는 내용에 따라 다른 클래스에 의해 인스턴스화됩니다.std :: unordered_map에서 다른 유형의 클래스에 포인터를 저장합니다.
std::unordered_map <std::string, TYPE1 *> myDevices;
또한 구성 파일에 사용되는 식별 키 인 std::string
과 :
class BASE {
public:
BASE();
virtual ~BASE();
};
class TYPE1 : public BASE {
public:
TYPE1();
};
는 지금은로 정의 된 std::unordered_map
에서 이러한 인스턴스에 대한 포인터를 저장합니다.
std::unordered_map
for (auto& elem : myDevices) {
//do stuff
}
를 사용하여 반복하면 내가 모든 장치에서 동일한 작업을 수행 할 수있는 편리 성을 필요로하는 경우 객체에 빠르게 직접 액세스 할 수 있습니다 따라서 std::unordered_map
입니다. 코드 전체에서 광범위하게 사용합니다.
이제는 BASE
의 자식이지만 역시 다른 유형 인 TYPE2
이 필요합니다.
내가
을 수정하려면 어떻게 그렇게 받아들이 :
내 질문은 동일한 결과
을하지만, 얻을 - 그들은 다른 기능을 -TYPE1
및 TYPE2
모두 동일한 방법을 실시해야 모든 유형의 수업은
std::unordered_map <std::string, acceptAnyTypeOfClass *> myDevices;
와 같습니다. 나는 이것으로 막혔고, 나는 주변에서 벗어날 수 있다고 생각하는 동안 아주 빨리 추악해질 것이고 나는 그것을 깨끗한 방법으로하고 싶다. 나는 무엇을 요구하고 있는가? 그렇다면 어떻게해야 하는가?
'std :: unordered_map'? –
'std :: unordered_map>'을 사용하십시오. –
ArchbishopOfBanterbury
@Arch는 올바른 길 위에 있습니다. –