作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想构建一个包含 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/
我是一名优秀的程序员,十分优秀!