2015-11-18 2 views
0

Возможно, что-то незначительное кто-то может просто исправить менее чем за минуту.Заполнение массива после инициализации

Но в основном я пытаюсь сбросить значения в массиве, если тип объекта отличается от типа по умолчанию «1». Получение ошибки атм, о инициализаторе-листе не может быть использован

GLfloat foodAmbient[] = { 0.3f, 0.6f, 1.0f, 1.0f }; 
    GLfloat foodSpecular[] = { 0.3f, 0.6f, 1.0f, 1.0f }; 
    GLfloat foodDiffuse[] = { 5.3f, 0.3f, 1.0f, 1.0f }; 
    GLfloat foodShininess[] = { 50.0 }; 

    if (type == 2) 
    { 
     foodDiffuse = { 0.3f, 0.3f, 5.3f, 1.0f }; 
    } 

    glMaterialfv(GL_FRONT, GL_AMBIENT, foodAmbient); 
    glMaterialfv(GL_FRONT, GL_SPECULAR, foodSpecular); 
    glMaterialfv(GL_FRONT, GL_DIFFUSE, foodDiffuse); 
+3

Сырые массивы не поддерживают назначение. Но вы можете использовать, например. 'std :: copy', чтобы скопировать данные. Лучше вы можете использовать' std :: array', а затем вы можете назначить. –

ответ

1
foodDiffuse = { 0.3f, 0.3f, 5.3f, 1.0f }; 

неправильно, потому что вы не можете присвоить массив, как это. Этот синтаксис может использоваться только для инициализации массива. После инициализации массива вы можете изменять только отдельные элементы массива.

Замените эту строку с:

foodDiffuse[0] = 0.3f; 
foodDiffuse[1] = 0.3f; 
foodDiffuse[2] = 5.3f; 
foodDiffuse[3] = 1.0f; 
Смежные вопросы