Инициализировать статическое объединение в классе - PullRequest
3 голосов
/ 19 июня 2011

Я использую код с открытым исходным кодом, который объявил статическое объединение внутри класса следующим образом.

VAD.h:

class VD
{   
public:
    static union Wu
    {
        const short w[2 * 64];
        const double y[16];      
    } wu; 
};

VAD.cpp:

VD:: Wu  VD:: wu =
{
     0x0000,  0x7FFF,  0x0000,  0x7FFF,  0x0000,  0x7FFF,  0x0C8B,  0x7F61,
     0x18F8,  0x7D89,  0x2527,  0x7A7C,  0x18F8,  0x7D89,  0x30FB,  0x7641,
     0x471C,  0x6A6D,  0x2527,  0x7A7C,  0x471C,  0x6A6D,  0x62F1,  0x5133,
     0x30FB,  0x7641,  0x5A82,  0x5A82,  0x7641,  0x30FB,  0x3C56,  0x70E2,
     0x6A6D,  0x471C,  0x7F61,  0x0C8B,  0x471C,  0x6A6D,  0x7641,  0x30FB,
     0x7D89, -0x18F8,  0x5133,  0x62F1,  0x7D89,  0x18F8,  0x70E2, -0x3C56,
     0x5A82,  0x5A82,  0x7FFF,  0x0000,  0x5A82, -0x5A82,  0x62F1,  0x5133,
     0x7D89, -0x18F8,  0x3C56, -0x70E2,  0x6A6D,  0x471C,  0x7641, -0x30FB,
     0x18F8, -0x7D89,  0x70E2,  0x3C56,  0x6A6D, -0x471C, -0x0C8B, -0x7F61,
     0x7641,  0x30FB,  0x5A82, -0x5A82, -0x30FB, -0x7641,  0x7A7C,  0x2527,
     0x471C, -0x6A6D, -0x5133, -0x62F1,  0x7D89,  0x18F8,  0x30FB, -0x7641,
    -0x6A6D, -0x471C,  0x7F61,  0x0C8B,  0x18F8, -0x7D89, -0x7A7C, -0x2527,
     0x0000,  0x7FFF,  0x0000,  0x7FFF,  0x0000,  0x7FFF,  0x30FB,  0x7641,
     0x5A82,  0x5A82,  0x7641,  0x30FB,  0x5A82,  0x5A82,  0x7FFF,  0x0000,
     0x5A82, -0x5A82,  0x7641,  0x30FB,  0x5A82, -0x5A82, -0x30FB, -0x7641
};

, когда я скомпилировал этот код с использованием VC ++ 6.0 для Windows ... произошла эта ошибка:

public: static union VD :: Wu VD :: wu ': не-агрегаты не могут быть инициализированы списком инициализаторов

Кто-нибудь может мне помочь, пожалуйста?

1 Ответ

4 голосов
/ 19 июня 2011

Вам нужна дополнительная пара фигурных скобок, поскольку вы хотите инициализировать массив, вложенный в объединение:

VD:: Wu  VD:: wu =
{
  { // <-- forgot
    <snip />
  } // <-- these
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...