加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如何在c中使用结构列表

发布时间:2020-12-16 09:50:51 所属栏目:百科 来源:网络整理
导读:我想构建一个包含Headers列表的struct Packet.我使用的相关代码: //Packet.h#include listusing namespace std;struct Header { Header(); bool Valid; long unsigned DestAddr:48;};struct Packet_t { Packet_t(); listHeader Headers;}; 现在我尝试构建Pa
我想构建一个包含Headers列表的struct Packet.我使用的相关代码:

//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的构造函数,该构造函数将初始化Headers列表以仅包含一个头 – 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);
};

我得到的错误:

Packet.cpp:错误:没有匹配函数来调用’std :: list> :: push_front(Header(&)())’

真的很感激任何帮助

解决方法

这是一个函数声明:

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
{

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读