Ваша проблема в том, что вы смешиваете способ работы Delphi и C ++ с объектами.
В случае C ++ экземпляр класса можно использовать тремя способами:
- в качестве значения
- как ссылка
- как указатель
Только два последних способа выражают то же поведение, которое вы ожидаете от кода Delphi.
В вашем примере вы создаете объекты-значения, это означает, что когда вы пытаетесь назначить камеру на объект, копируется часть объекта, принадлежащая камере, но ничего больше.
Вы должны изменить свойкод для использования указателей вместо
int main()
{
Entity* point = new Entity;
Camera* camera = new Camera;
vector<Entity*> vec;
vec.push_back( point );
vec.push_back( camera );
// don't forget to delete them, when you're done with the list
for (vector<Entity*>::iterator iter = vec.begin(); iter != vec.end(); ++iter)
delete (*iter);
}
enter code here
Чтобы не связываться с указателями напрямую, более современная идиома C ++ заключается в использовании интеллектуальных указателей.Как показывает ответ paul_71.