title: C++: ADT Base class with hard-coded Derived classes vs all-encompassing class built from file-input
body: <p>Which is a better design: An ADT Base class with hard-coded, concrete derived classes and instances or all-encompassing class whose instances are built from file input?</p>
  
  <p><strong>EXAMPLE:</strong></p>
  
  <pre><code>class ADTSpell {
      ADTSpell(std::string name, int min_damage, int max_damage);
      virtual ~ADTSpell()=0;
      //...
  };
  
  class Fire : public ADTSpell {
      Fire() : ADTSpell("Fire", 14, 15) { }
      //...
  };
  
  /* Other concrete derived classes */
  </code></pre>
  
  <p>--OR--</p>
  
  <pre><code>class Spell {
      Spell(std::string name, int min_damage, int max_damage, /*...*/ )
      //...
  };
  
  File: Spells.txt
  Fire 14 15
  Heal -3 -5
  Ice 5 8
  </code></pre>