#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;
}