#include <iostream>
#include <vector>
using namespace std;
#define Training // to declare the global variable
///Definition of class Pocket
class pocket
{
public:
double volume;
};
///Definition of virtual class TrainerClass
class TrainerClass
{
public:
pocket *Space;
virtual void AddItems()=0;
};
///Definition of derived class
class BagClass: public TrainerClass
{
public:
double mass;
BagClass(double m2)
{
mass=m2;
}
void AddItems()
{
cout << "out virtual " << endl;
}
};
#ifdef Training
#define Training
TrainerClass **stuff=0;
#else
extern TrainerClass **stuff;
#endif
int main()
{
int nbrtrainer = 2;
vector<TrainerClass*> stuff(nbrtrainer); // vector of the given dynamic size
//for(int itrainer=0;itrainer<nbrtrainer;itrainer++)
// stuff[itrainer] = new TrainerClass;
stuff[0] = new BagClass(0.2);
stuff[1] = new BagClass(0.5);
stuff[0]->AddItems();
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKI2RlZmluZSBUcmFpbmluZyAgLy8gdG8gZGVjbGFyZSB0aGUgZ2xvYmFsIHZhcmlhYmxlCgovLy9EZWZpbml0aW9uIG9mIGNsYXNzIFBvY2tldApjbGFzcyBwb2NrZXQKewogIHB1YmxpYzoKICAgICAgZG91YmxlIHZvbHVtZTsKfTsKCi8vL0RlZmluaXRpb24gb2YgdmlydHVhbCBjbGFzcyBUcmFpbmVyQ2xhc3MKY2xhc3MgVHJhaW5lckNsYXNzCnsKICBwdWJsaWM6CiAgICBwb2NrZXQgKlNwYWNlOwogICAgdmlydHVhbCB2b2lkIEFkZEl0ZW1zKCk9MDsKfTsKCi8vL0RlZmluaXRpb24gb2YgZGVyaXZlZCBjbGFzcwpjbGFzcyBCYWdDbGFzczogcHVibGljIFRyYWluZXJDbGFzcwp7CiAgcHVibGljOgogICAgICBkb3VibGUgbWFzczsKCiAgICAgIEJhZ0NsYXNzKGRvdWJsZSBtMikKICAgICAgewogICAgICAgIG1hc3M9bTI7CiAgICAgIH0KCiAgICAgIHZvaWQgQWRkSXRlbXMoKQogICAgICB7CiAgICAgICAgIGNvdXQgPDwgICJvdXQgdmlydHVhbCAiICA8PCBlbmRsOwogICAgICB9CiB9OwoKI2lmZGVmIFRyYWluaW5nCiNkZWZpbmUgVHJhaW5pbmcKVHJhaW5lckNsYXNzICoqc3R1ZmY9MDsKI2Vsc2UKZXh0ZXJuIFRyYWluZXJDbGFzcyAqKnN0dWZmOwojZW5kaWYKCmludCBtYWluKCkKewogICAgaW50IG5icnRyYWluZXIgPSAyOwoKICAgIHZlY3RvcjxUcmFpbmVyQ2xhc3MqPiBzdHVmZihuYnJ0cmFpbmVyKTsgIC8vIHZlY3RvciBvZiB0aGUgZ2l2ZW4gZHluYW1pYyBzaXplCiAgICAvL2ZvcihpbnQgaXRyYWluZXI9MDtpdHJhaW5lcjxuYnJ0cmFpbmVyO2l0cmFpbmVyKyspIAogICAgLy8gICBzdHVmZltpdHJhaW5lcl0gPSBuZXcgVHJhaW5lckNsYXNzOwoKICAgIHN0dWZmWzBdID0gbmV3IEJhZ0NsYXNzKDAuMik7CiAgICBzdHVmZlsxXSA9IG5ldyBCYWdDbGFzcygwLjUpOwoKICAgIHN0dWZmWzBdLT5BZGRJdGVtcygpOwoKICAgIHJldHVybiAwOwp9