undefined reference в статичных контейнерах

При компиляции выдает undefined reference, не могу понять причину

class Test
{
    static std::vector<int> vec;
    static std::queue<std::string> que;
public:
    Test();
};

Test::Test()
{
    for(int i =0; i<50; ++i)
    {
        vec.push_back(i);
        que.push(std::to_string(i));
    }

    std::cout<< vec.size() << " " << que.size()<<"\n";
}

Qt 5.13

Компилятор mingw 7.3.0 32

Решение:

Как подсказали ниже нужно инициализировать статические объекты.

Вот так:

vector<int> Test::vec ;
queue<std::string> Test::que;

По хорошему инициализация объектов должна быть вне класса, но перед реализацией конструктора.


Ответы (1 шт):

Автор решения: Harry

У вас два статика -

static std::vector<int> vec;
static std::queue<std::string> que;

объявлены, но не определены...

→ Ссылка