Инициализировать структуру C ++ - PullRequest
1 голос
/ 28 февраля 2011
struct CUSTIOMSTRUCT
{
    FLOAT x, y, z;
    DWORD color;
};

CUSTOMSTRUCT MyVertex = {320.0f, 50.0f, 1.0f, 0xFF00FFCC};

Я не понимаю эту часть:

{320.0f, 50.0f, 1.0f, 0xFF00FFCC};

Я должен привести их в порядок?

Извините, но я C # парень.

Ответы [ 3 ]

5 голосов
/ 28 февраля 2011

Да, вы должны привести их в порядок.Версия C99 языка C предлагает «тегированные» агрегатные инициализаторы, что позволяет «выводить их» из строя, но это не на C ++ (пока?)

2 голосов
/ 28 февраля 2011

Да, они должны быть в порядке объявления, поэтому {x, y, z, color}.

0 голосов
/ 28 февраля 2011

Точнее,

{} оператор возвращает несколько байтов памяти, Поэтому, когда вы используете

{320f, 50f, 1f, 0xFF00FFCC} Он возвращает продолжающиеся 16 байтов памяти, которые затем копируются с помощью команды "memcpy" в переменную struct.

Так что, если вы поставите их не по порядку, программа компилируется нормально, но не работает нормально.

Лучшим вариантом будет использование конструкторов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...