#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(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 */