gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 20:13:20 26 4
gpt4 key购买 nike

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

//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 构建构造函数,它将初始化 header 列表以仅包含一个 header - 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
{

}

关于c++ - 如何在 C++ 中使用结构列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22171201/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com