Вы можете написать:
Dataset(const vector<float> &val): std::vector<float>(val) {}
но, в конце концов, вы действительно не должны публично наследовать от std::vector
. Есть несколько подсказок, которые показывают, что std::vector
просто не предназначен для получения:
- Нет виртуального деструктора
- Нет защищенных членов
- Нет виртуальных функций
Вы не можете запретить кому-либо рассматривать ваш Dataset
объект как std::vector<float>
, потому что публичное наследование означает, что Dataset
является std::vector<float>
, и это потерпит неудачу в случае попытки удалить объект Database
с помощью указателя std::vector<float>
.
Если вы хотите повторно использовать std::vector
, либо используйте закрытый std::vector
член, либо унаследуйте конфиденциально и выставьте то, что должно быть через using
объявлений.