Ho due classi chiamate Player
e Enemy
che ereditano entrambe da una classe chiamata GameObject
, come posso conservarle entrambe in un array di tipo GameObject
pur mantenendo le proprie informazioni univoche?
Ho provato a creare un array come questo:
std::vector<GameObject> _gameObjList;
e quindi ho provato a inserire un oggetto test in questo modo:
testObject test;
_gameObjList.push_back(test);
ma poi mi ha dato il seguente errore di eccezione:
Error C2664 'void std::Vector<GameObject *,std::allocator<_Ty>>::push_back(_Ty &&)': cannot convert argument 1 from 'testObject *' to 'GameObject *const &' OpenGLFramework c:\users\name\projects\myproject\gamemanager.cpp 11
quindi fondamentalmente sta dicendo che i tipi dovrebbero essere gli stessi, anche se il mio testobject eredita da GameObject
.
Ecco il mio file di intestazione testObject:
#pragma once
#include "GameObject.h"
class testObject : public GameObject
{
public:
testObject();
testObject(float xPosition, float yPosition, float zPosition);
void Update();
~testObject();
};
Non c'è nulla nel file cpp che lo accompagna tranne il costruttore e il metodo di aggiornamento, ma sono tutti vuoti al momento quindi non penso sia necessario mostrarli qui.
Spero che qualcuno qui possa spiegarmi il modo corretto di farlo e / o indicare gli errori nel mio codice. Voglio solo avere un arraylist di tutti i miei oggetti di gioco in modo da poter aggiungere / rimuovere oggetti facilmente.