#include <iostream>
#include <vector>
#include <memory>
using namespace std;
class Entity {
public:
int index;
Entity() {};
virtual ~Entity() {};
virtual void hit() = 0;
};
class Mesh : public Entity {
public:
//int index; // No don't redefine: here you'd have two different indexes
Mesh(int x) {this->index=x;};
void hit() override {} // extraa safety: use override instead of virtual to be sure to override
};
int main() {
vector<unique_ptr<Entity>> objects;
objects.push_back(unique_ptr<Entity>(new Mesh(35)));
objects.push_back(unique_ptr<Entity>(new Mesh(10)));
for ( int i = 0 ; i < objects.size() ; i++ )
cout << objects[i]->index << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8bWVtb3J5PgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIEVudGl0eSB7CnB1YmxpYzoKCiAgICBpbnQgaW5kZXg7CiAgICBFbnRpdHkoKSB7fTsKICAgIHZpcnR1YWwgfkVudGl0eSgpIHt9OwogICAgdmlydHVhbCB2b2lkIGhpdCgpID0gMDsKfTsKY2xhc3MgTWVzaCA6IHB1YmxpYyBFbnRpdHkgewoKcHVibGljOgogICAgLy9pbnQgaW5kZXg7ICAgICAvLyBObyBkb24ndCByZWRlZmluZTogIGhlcmUgeW91J2QgaGF2ZSB0d28gZGlmZmVyZW50IGluZGV4ZXMgCiAgICBNZXNoKGludCB4KSB7dGhpcy0+aW5kZXg9eDt9OwogICAgdm9pZCBoaXQoKSBvdmVycmlkZSB7fSAgIC8vIGV4dHJhYSBzYWZldHk6IHVzZSBvdmVycmlkZSBpbnN0ZWFkIG9mIHZpcnR1YWwgdG8gYmUgc3VyZSB0byBvdmVycmlkZQp9OwoKaW50IG1haW4oKSB7CiAgICB2ZWN0b3I8dW5pcXVlX3B0cjxFbnRpdHk+PiBvYmplY3RzOwogICAgb2JqZWN0cy5wdXNoX2JhY2sodW5pcXVlX3B0cjxFbnRpdHk+KG5ldyBNZXNoKDM1KSkpOwogICAgb2JqZWN0cy5wdXNoX2JhY2sodW5pcXVlX3B0cjxFbnRpdHk+KG5ldyBNZXNoKDEwKSkpOwoKICAgIGZvciAoIGludCBpID0gMCA7IGkgPCBvYmplY3RzLnNpemUoKSA7IGkrKyApCiAgICAgICAgY291dCA8PCBvYmplY3RzW2ldLT5pbmRleCA8PCBlbmRsOwoKICAgIHJldHVybiAwOwp9ICAgICAgICAgICAgICAgIA==