Массив объединения C++ и Вар?

Нет никакого способа сделать, что-то вроде этого, в C++ там?

union {
    {
        Scalar x, y;
    }
    Scalar v[2];
};

Где x == v[0] и y == v[1]?

7
задан timrau 15 August 2012 в 00:02
поделиться

4 ответа

Как насчет

union {
    struct {
        int x;
        int y;
    };
    int v[2];
};

править:

union a {
    struct b { int first, second; } bee;
    int v[2];
};

Ужасный, но это более точно

14
ответ дан 6 December 2019 в 04:58
поделиться

Так как Вы используете C++ и не C, и так как они имеют те же типы, почему не только делают x ссылкой на v [0] и y ссылка на v[1]

18
ответ дан 6 December 2019 в 04:58
поделиться

Попробуйте это:

template<class T>
struct U1
{
    U1();
    T   v[2];
    T&  x;
    T&  y;
};

template<class T>
U1<T>::U1()
    :x(v[0])
    ,y(v[1])
{}

int main()
{
    U1<int>   data;

    data.x  = 1;
    data.y  = 2;
}
6
ответ дан 6 December 2019 в 04:58
поделиться

В зависимости от того, каков "Скаляр", да, можно сделать это в C++. Синтаксис почти точно (возможно, даже точно точно, но я ржав на объединениях), что Вы записали в своем примере. Это совпадает с C, кроме существуют ограничения на типы, которые могут быть в объединениях (IIRC, у них должен быть конструктор по умолчанию). Вот соответствующая статья Wikipedia.

1
ответ дан 6 December 2019 в 04:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: