Как реализовать очередь объектов класса на C++?
Класс player у вас не содержит явно объявленного деструктора. В то время, как в методе void player::enqueue(int value) вы выделяете динамическую память. Скорее всего, вы поимеете утечку памяти.
Используйте умные указатели, либо напишите деструктор, который все подчистит.
Сам прототип метода void player::enqueue(int value) архитектурно не верный. Аргументом должен быть не int. В в зависимости от того, что вы в конечном итоге хотите, вам нужно реализовать либо void player::enqueue(const card&), либо void player::enqueue(card&&), либо оба сразу.
Вообще работа с сырыми указателями в C++ не самая лучшая идея. Опять таки не зная окончательную задачу сложно говорить, но вам нужно возвращать в player::dequeue()  либо умный указатель либо ссылку на объект либо сам объект. Но не указатель.
Класс card у вас хранит информацию о следующей карте. Это опять таки не верное архитектурное решение. Этот класс должен быть максимально простым. А очередь должна быть реализована отдельно. Сейчас у вас какое-то странное размазывание логики класса player по двум классам.
Почему бы вам не использовать стандартный контейнер queue из STL?
В колоде максимум 54 карты, для хранения выбытия карт хватит битов в int64.
Класс Card лишний.