Информация об изменениях

Сообщение С++ union initialization от 21.03.2020 4:57

Изменено 21.03.2020 4:59 c-smile

С++ union initialization
Есть такая декларация:

struct func {
  const char* name;
  int argc;
  union {
    int(*f0)(void*);
    int(*f1)(void*, int);
  } f;
};


Есть такая функция

int foo(void* p, int v) { return 42; };


Нужно написать инициализатор типа этого:

func fdef = { "meth1", 1, {.f1 = foo} };


Но чего-то не выходит какменный цветок, во всяком случае в VS2017

Ругается на '.' тут:

func fdef = { "meth1", 1, {.f1 = foo} };
---------------------------^


Можно как-то победить это
С++ union initialization
Есть такая декларация:

struct func {
  const char* name;
  int argc;
  union {
    int(*f0)(void*);
    int(*f1)(void*, int);
  } f;
};


Есть такая функция

int foo(void* p, int v) { return 42; };


Нужно написать инициализатор типа этого:

func fdef = { "meth1", 1, {.f1 = foo} };


Но чего-то не выходит каменный цветок, во всяком случае в VS2017

Ругается на '.' тут:

func fdef = { "meth1", 1, {.f1 = foo} };
---------------------------^


Можно как-то победить это безобразие?