如何在 c++ 中使用结构列表

How to use list of structs in c++

本文关键字:结构 列表 c++      更新时间:2023-10-16

我想构建一个包含标头列表的结构包。我使用的相关代码:

//Packet.h
#include <list>
using namespace std;
struct Header {
    Header();
    bool Valid;
    long unsigned DestAddr:48;
};
struct Packet_t {
    Packet_t();
    list<Header> Headers;
};

现在,我尝试为Packet_t构建构造函数,该构造函数将初始化标头列表以仅包含一个标头 - FirstHeader:

//Packet.cpp
#include "Packet.h"
Header::Header() {
    Valid = false;
    DestAddr = 0;
};
Packet_t::Packet_t(){
    ValidPacket = false;
    Header FirstHeader(); //here I try to initialize the first Header using its constructor
    Headers.push_front(FirstHeader);
};

我得到的错误:

数据包.cpp:错误:调用"std::list>::p ush_front(标头 (&)()))"没有匹配函数

真的很感谢任何帮助

这是一个函数声明:

Header FirstHeader();  // function FirstHeader, returns a Header

你需要的是

Headers.push_front(Header());

Headers.emplace_front(); // default constructs FirstHeader object in place

或者,如果您需要在推送之前处理实例,

Header FirstHeader;
// ... do stuff to Header
Headers.push_front(FirstHeader);

或者,使用构造函数初始化列表使用一个元素初始化列表:

Packet_t::Packet_t() : Headers(1) // or Headers{Header(args....) if need args
{
}