我想构建一个包含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;
};
Run Code Online (Sandbox Code Playgroud)
现在我尝试构建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);
};
Run Code Online (Sandbox Code Playgroud)
我得到的错误:
Packet.cpp:错误:没有匹配函数来调用'std :: list> :: push_front(Header(&)())'
真的很感激任何帮助
这是一个函数声明:
Header FirstHeader(); // function FirstHeader, returns a Header
Run Code Online (Sandbox Code Playgroud)
你需要的是什么
Headers.push_front(Header());
Run Code Online (Sandbox Code Playgroud)
要么
Headers.emplace_front(); // default constructs FirstHeader object in place
Run Code Online (Sandbox Code Playgroud)
或者,如果您在推送之前需要一个实例来处理,
Header FirstHeader;
// ... do stuff to Header
Headers.push_front(FirstHeader);
Run Code Online (Sandbox Code Playgroud)
或者,使用构造函数初始化列表使用一个元素初始化列表:
Packet_t::Packet_t() : Headers(1) // or Headers{Header(args....) if need args
{
}
Run Code Online (Sandbox Code Playgroud)