Cannot use Array elements as part of commands

Plus remember that if you create an object run-time it is subject to the rules of C++ scope.

if you want a friendly name for your instances, you could use pointers

EnergyMonitor AreaLabes[3];

EnergyMonitor* Area00 = &AreaLabes[0];  // EDITED to add address of operator!!
EnergyMonitor* Area01 = &AreaLabes[1];
EnergyMonitor* Area02 = &AreaLabes[2];

EnergyMonitor monitors[] = {Area00, Area01, Area02};

but then use dereferencing to iterate over the pointers

  for(int i=0; i<=sizeof(SensorPins); i++)
  {
    AreaLabes[i]->current(SensorPins[i], 60); <<PROBLEM SOLVED
  }
  // or
  Area00->someMemberFunction();