2012-02-19 3 views
0

다른 클래스의 객체를 포함 할 수있는 배열을 C++로 만들고 싶습니다.C++, Stl & Boost없는 객체 배열 (다른 클래스에서)

그것은 내가, STL을 사용하는 당신은 기본 클래스를 만들고 기본 클래스에서 클래스를 파생해야

+2

이것은 질문 및 답변 사이트이며 약간 질문이 있습니다. –

+0

사실상 말하자면, 정의에 의한 * 배열 *은 단지 하나의 고정 된 유형의 객체 배열 일 수 있기 때문에 이것은 불가능합니다. –

+0

이 숙제와 관련하여 어떤 교훈을 배웠습니까? 상속이나 템플릿을 사용하지 않는 한 다른 클래스의 객체를 균일하게 처리 할 수 ​​없으므로 이례적입니다. 그게 네가 배우고있는거야? –

답변

1

& 등을 향상 할 수 없다는 것입니다 내 hometask 및 조건 중 하나의 부분입니다. 결과적으로 배열 Base* 배열을 만들고 거기에 모든 파생 클래스를 넣을 수 있습니다.

1

void*에 대한 포인터를 배열에 저장하고 객체를 void*으로 전송할 수 있습니다. 그러나 당신은 이것을해서는 안됩니다!

가능한 경우 모든 개체를 기본 클래스에서 파생시키고 포인터를 Base*에 저장해야합니다. 이것은이 문제를 해결하는 더 좋은 방법입니다.

0

같은 컨테이너에 같은 유형의 객체를 동시에 보유해야합니까? 그렇다면 모든 유형을 수용 할 수 있어야합니까? 그렇다면 유일한 해결책은 void*을 사용하고 저장할 개체에 포인터를 저장하는 것입니다.

한 컨테이너가 한 가지 유형의 객체 만 보유해야하는 경우 템플릿을 사용하여이를 수행 할 수 있습니다. 같은 컨테이너에 다른 유형의 객체 인 을 보유해야하지만을 보유 할 수있는 유형에 제한을 둘 수 있다면 Base 클래스에서 파생되어야하고 Base*의 배열을 만들면됩니다.