Первый аргумент, который вы передаете конструктору, - это указатель на число float
с, а второй - const char*
, который будет неявно преобразован в const std::string
, поэтому вам необходимо соответствующим образом изменить сигнатуру:
vertex_array(float* vertex_buffer, const std::string& texture_file);
Вы также можете удалить объявление ссылки для texture_file, чтобы сделать его действительным, но если позднее вы собираетесь создать экземпляр vertex_array с использованием реальной строки std ::, это приведет к ненужной конструкции копирования, поэтому перейдите к const
ссылка.
Если у вас разные размеры vertex_buffers, вам также необходимо указать размер в качестве аргумента или рассмотреть возможность использования std::initializer_list
или контейнера для отслеживания количества элементов.
Пример:
vertex_array(std::initializer_list<float> vertex_buffer, const std::string& texture_file);
vertex_array va_2(
{ 0.5f, -0.5f, 0.5f, 1.0f, 0.0f,
0.5f, -0.5f, -0.5f, 1.0f, 1.0f,
-0.5f, -0.5f, -0.5f, 0.0f, 1.0f,
-0.5f, -0.5f, 0.5f, 0.0f, 0.0f,
0.5f, 0.5f, 0.5f, 1.0f, 0.0f,
0.5f, 0.5f, -0.5f, 1.0f, 1.0f,
-0.5f, 0.5f, -0.5f, 0.0f, 1.0f,
-0.5f, 0.5f, 0.5f, 0.0f, 0.0f}, "blocks.png");