Скажи в C ++, T ли в "шаблоне "свободен? - PullRequest
0 голосов
/ 11 января 2020

Я делаю шаблонный класс Queue на C ++, и во время написания деструктора я столкнулся с этой проблемой: примитивный тип данных, такой как int и char, не может быть аргументом для функции удаления.

Я хочу, чтобы очередь была доступна как для указателей классов, так и для примитивных типов данных, и удаляю ее члены из памяти после разрушения самой очереди.

Большой коммутатор для захвата всех примитивных данных Типы кажутся ... чрезмерными. Есть ли общий способ c, чтобы определить, можно ли отправить имя типа T в функцию удаления? Свободная функция? Другие предложения?

Заранее спасибо!

PS: Для потомков, вот пример кода;

template <typename T>
class Queue {
public:
    virtual ~Queue() {
        while(length > 0) {
            delete top(); //Delete current member from memory //DOES NOT ACCEPT INT
            pop(); //Remove current member from Queue
        } //Do this until all members are deleted from memory
        free(array); //Free Queue's underlying malloc T[] from memory
    }
}

РЕДАКТИРОВАТЬ: Пример - http://cpp.sh/2wuna

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...