// #include <memory>
// #include <vector>
// #include <string>
#include <QVector>
#include <QDebug>

using namespace  std;
enum class LineId {
  Temperature,
  Humidity,
  OverHeat
};


#if 0
class Dataset{

public:
    Dataset(QString& configFile);

    // return headlines (Kennlinien) of known types from ST code
    QVector* HeadLine(enum class LineId);
private:

    // Class members (m_, but don't like the '_' )
    vector<std::unique_ptr> headline;

    vector mHeadLineTemperature;
    vector mHeadLineOverheat;
    vector mHeadLineHumidity;
};

#endif

#include <QVector>
#include <QMetaType>




// Forward declaration of a base class for polymorphic behavior
class QVectorBase {
public:
    virtual ~QVectorBase() = default;
    virtual void print() const = 0;
};

// Template class to wrap a QVector<T> and inherit from QVectorBase
template<typename T>
class QVectorWrapper : public QVectorBase {
public:
    QVector<T> vec;

    QVectorWrapper() = default;
    explicit QVectorWrapper(const QVector<T>& v) : vec(v) {}

    void print() const override {
        qDebug() << "Vector of" << sizeof(T) << "bytes:" << vec;
    }
};

class Dataset{
    public:
        Dataset(QString& configFile);
        QVectorBase *HeadLine(uint8_t LineId);

     private:
             QVector<QVectorBase*> mHeadlineVector;
};