
#include <iostream>
#include <cstring>
#include <list>

using namespace std;

#define BUFFERSIZE      1024

class receivebuffer_0{

        public:
                unsigned char *payload;
                int NALU;
                receivebuffer_0()               // Constructor
                {
                        payload = new unsigned char[BUFFERSIZE];
                        NALU = 0;
                }
                
                receivebuffer_0(const receivebuffer_0& other)
                {
                    payload = new unsigned char[BUFFERSIZE];
                    NALU = other.NALU;
                	memcpy(payload, other.payload, BUFFERSIZE);
                }
};

int main() {

        list<receivebuffer_0> WiFi;

        receivebuffer_0 data;
        size_t payloadLength = 100;
        unsigned char payloadIndex[payloadLength];
        payloadIndex[0] = 254;
        payloadIndex[1] = 30;
        data.NALU = 1;

        cout<< (int)payloadIndex[0]<<endl; // output 254 OK

        memcpy(data.payload , payloadIndex, 2);

        WiFi.push_back(data);

        payloadIndex[0] = 40;
        payloadIndex[1] = 45;
        data.NALU = 12333;

        memcpy(data.payload , payloadIndex, 2);

        WiFi.push_back(data);

        cout<<(int)WiFi.front().payload[0]<<endl;
        //output 40  .... should output 254

        cout<<WiFi.front().NALU<<endl; // output 1

        WiFi.pop_front();

        cout<<(int)WiFi.front().payload[0]<<endl; // output 40
        cout<<WiFi.front().NALU<<endl; // output 12333

        return 0;
}