I'm quite new to c++ and i'm trying to make a system where I can declare an item to a registry of items so I can call them later by an id. Whenever I change my array pointer to static the program does not compile and errors out with
Error LNK2001 unresolved external symbol "private: static class item * item_registry::m_items" (?m_items@item_registry@@0PAVitem@@A)    NewVoyage   C:\Users\amazo\documents\visual studio 2015\Projects\NewVoyage\NewVoyage\item_registry.obj  1
item_registry.h
#pragma once
#include "item.h"
class item_registry
{
public:
    item_registry();
    ~item_registry();
    static int register_item(item p_item);
    static item get_item(int p_id);
    static void init();
private:
    static int const m_size = 512;
    static item *m_items;
};
item_registry.cpp
#include "item_registry.h"
item_registry::item_registry()
{
}
item_registry::~item_registry()
{
}
void item_registry::init()
{
    item_registry::m_items = new item[item_registry::m_size];
    for (int i = 0; i < item_registry::m_size; i++) 
    {
        item_registry::m_items[i] = item("NULL", -1);
    }
}
int item_registry::register_item(item p_item)
{
    for (int i = 0; i < item_registry::m_size; i++) 
    {
        if (item_registry::m_items[i].get_name() == "NULL" || item_registry::m_items[i].get_value() == -1) 
        {
            item_registry::m_items[i] = p_item;
            return i;
        }
    }
    return -1;
}
item item_registry::get_item(int p_id)
{
    return item_registry::m_items[p_id];
}
 
    