Массив C в доступе к структуре

#c

#c

Вопрос:

У меня есть эта структура в c :

 struct Vertex_2 {
    GLdouble position[3];
};
  

Я пытаюсь получить доступ к массиву внутри него следующим образом:

 Vertex_2.position[0] = //something;
Vertex_2.position[1] = //something;
....
...
..
  

когда я его компилирую, я получаю следующее:

 error: expected unqualified-id before ‘.’ token
  

почему это так?

Ответ №1:

Вы должны создать экземпляр struct перед использованием его членов.

 Vertex_2 v; // v is an *instance* of the *struct* Vertex_2
v.position[0] = //something;
v.position[1] = //something;
...
  

Подумайте о Vertex_2 том, как должно выглядеть все Vertex_2 (но само по себе это не a Vertex_2 ). Затем вы должны фактически создать Vertex_2 , выполнив Vertex_2 name; . В примере мы использовали имя v вместо name , но вы можете назвать экземпляр как угодно. Затем вы можете получить доступ к переменным-членам этого экземпляра через имя с точкой ( . ), как вы пытались сделать раньше.

Ответ №2:

Вам нужно определить переменную вашего класса, вы определили только тип.

 struct Vertex_2 {
    GLdouble position[3];
} varVertex_2; // <-- now you have an instance of the struct


varVertex_2.position[0] = //something;
varVertex_2.position[1] = //something;
  

Ответ №3:

Поскольку вы пытаетесь получить доступ к типу struct, а не к фактической структуре. Попробуйте:

 struct Vertex_2 {
    GLdouble position[3];
} myVertex;

myVertex.position[0] = //something;
myVertex.position[1] = //something;