#ifndef VEHICLE_H
#define VEHICLE_H

#include <string>
#include <typeinfo>


// polimorfikus osztály, mert van virtuális függvénye,
// és absztrakt osztály, mert van legalább egy 
// pure virtual függvénye
class vehicle
{
public:
  vehicle( const std::string& s ) : reg( s ) {}
  virtual ~vehicle() { }  // virtuális destruktor!

  // ez nem virtual
  bool print()
  {
    std::cout << typeid( *this ).name << " with reg = "
              << get_reg() << " : " << mv() << std::endl;
    return mv();
  }

  std::string get_reg() const { return reg; }

  // pure virtual
  virtual bool mv() = 0;
private:
  std::string reg;
};

inline bool vehicle::mv() { return reg != ""; }

#endif /* VEHICLE_H */