가능한 중복 :
Learning C++: polymorphism and slicing
Array of polymorphic base class objects initialized with child class objectsC++ - 기본 클래스의 객체 지향 배열
나는 내 OpenGL을 응용 프로그램에 통합 객체 지향 클래스를했습니다. 기본 클래스에는 Tick
이라는 함수가 있으며이 함수는 델타 시간을 나타내는 매개 변수와 함께 모든 틱 (눈금)을 호출해야합니다. 여기에 어떻게 보입니까 (이 질문과 관련이없는 것없이).
헤더 :
class Object
{
public:
virtual void Tick(float DeltaTime);
}
class Controller : public Object
{
public:
virtual void Tick(float DeltaTime);
}
은 그 때 나는 메인 루프, 초기화 및 폐기 (창 생성에서 분리하기)를 포함 Engine
라는 클래스가 있습니다. 나는 게임에있는 모든 개체를 추적 할 필요가있는 클래스에서
, 그래서 나는 배열 생성 :
for (unsigned int c = 0; c < 10; c++)
Objects[c].Tick(delta);
:
Object* Objects = new Object[10]; // for now max 10 objects
그럼 난 배열 물마루 반복 틱 함수를 호출을 루프 앞에 계산 된 delta
입니다.
배열의 객체 중 하나를 Controller
(예 :)에 지정하면 호출 된 Tick 함수는 항상 Object
에 있고 실제로 저장된 클래스가 아닌 것입니다.
나는 타입 캐스팅을 시도했다. (각 클래스는 타입을 식별하는 문자열을 가지고있다.) 아무런 쓸모가 없다.
나는 그 대답이 (나의 마지막 질문에 대한 답과 같은) 명백한 것이지만, 그 답을 찾을 수는 없다.
감사합니다. :)
키워드 분할을 알면 고맙습니다. 쉽게 답변을 찾을 수 있었을 것입니다. 그래서 'Object' 타입의 포인터 배열을 사용하여 문제가 해결되었습니다. (다시 한번 간단한 대답입니다) – zeluisping