Допустим, у меня есть класс, который будет использоваться для создания структуры дерева или списка. Давайте назовем это
template <typename K, typename V>
class Node{
// some data
Node<K,V>* next;
Node() {
next = static_cast<Node<K,V>*>( malloc( sizeof(Node<K,V>) ));
}
};
Делая это, я получаю следующую ошибку компилятора:
у 'malloc' нет аргументов, которые зависят от параметра шаблона, поэтому должно быть доступно объявление 'malloc' (если вы используете '-fpermissive', G++ примет ваш код, но разрешение на использование необъявленного имени устарело )
Есть ли способ использовать malloc таким образом, не используя устаревший код? Я хочу использовать malloc вместо new, потому что я хотел бы сделать там более продвинутое управление памятью.
Nodeкласс. У вас есть то, что кажется узлом связанного списка, который автоматически выделяет следующий узел, что при нормальных обстоятельствах вызвало бы бесконечную рекурсию, но на самом деле вы используетеmalloc, который не вызывает конструктор создаваемого вами объекта, который останавливает рекурсия. Я не уверен, действительно ли это умно или действительно нет. - person Seth Carnegie   schedule 08.05.2012std::malloc?) - person Mat   schedule 08.05.2012