만약에 추상 클래스 A 를 만들었고 그걸 따르는 B, C, D 클래스를 만들었어

이 B, C, D 가 내부적으로 다루는 데이터에 따라 추가로 들어가는 함수가 있을 거잖아

근데 얘네들이 전부 std::vector<A> 에 다 담겨있으면 나중에 벡터에서 꺼낼 때 얘가 구체적으로 뭔지를 모르니까 B, C, D 각각 따로 추가된 함수들(B.someB1, C.someC5, D.someD3 따위) 부를 수 없잖아 오로지 확실히 인터페이스를 따르는 함수들만 호출할 수 있고

이런 경우에 A 에다가 타입을 enum 따위로 들고 있는 상태에서 그 타입에 따라 B, C 혹은 D 로 캐스팅 후 원하는 함수를 부르는 것도 별로 좋은 설계는 아닌거야?

차라리 B 벡터, C 벡터, D 벡터 다 따로 나눠야 하나?