Структура инициализации структуры в .h на VisualStudio C ++

0

Я переношу linux-код в Windows, и я застрял в инициализации структуры стиля пакета.

Здесь исходный код протокола.h:

struct header
{
    uint8_t type;  
    uint8_t ext;   
    uint8_t seqno;
    uint8_t notused
};

struct packet
{
    struct header head;

    packet(uint8_t t, uint8_t e, uint8_t s) : head( { t, e, s, 0 } ) <== Error here
    { }
};

с: ошибка C2059: ошибка синтаксиса: ')' ошибка C2447: '{': отсутствует заголовок функции (формальный формат старого стиля?)

Не могли бы вы рассказать мне несколько советов?

большое спасибо

Себ

  • 0
    Возможно, вам следует обновить ваш компилятор Visual Studio.
  • 1
    Какая версия Visual Studio у вас есть? Если он достаточно новый, вы можете попробовать, например, head{ t, e, s, 0 } , или опустить скобки и попробовать head( t, e, s, 0 )
Показать ещё 2 комментария
Теги:
struct

1 ответ

0
Лучший ответ

Самый простой способ, на мой взгляд, просто добавить конструктор в struct header:

struct header
{
    uint8_t type;  
    uint8_t ext;   
    uint8_t seqno;
    uint8_t notused;
    header(uint8_t t, uint8_t e, uint8_t s, uint8_t n)
        : type(t), ext(e), seqno(s), notused(n)
    { }
};

struct packet
{
    header head;

    packet(uint8_t t, uint8_t e, uint8_t s) : head(t, e, s, 0)
    { }
};
  • 0
    Так просто ... Большое спасибо!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню