假設我有一個用於創建樹或列表結構的類。讓我們把它在模板類的構造函數中使用malloc
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>)));
}
};
通過這樣做,我收到了以下編譯器錯誤:
there are no arguments to 'malloc' that depend on a template parameter, so a declaration of 'malloc' must be available (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
有沒有辦法使用malloc以這樣的方式,而不必使用過時的代碼?我想用malloc而不是新的,因爲我想在那裏做一些更高級的內存管理。
這是一個不尋常的'Node'類。你有什麼似乎是自動分配下一個節點的鏈表節點,在正常情況下會導致無限遞歸,但實際上你正在使用'malloc',它不會調用你正在創建的對象的構造函數這會停止遞歸。我不確定這是否真的很聰明或真的不是。 –
你確定你不是簡單地失蹤,包括cstdlib? (並說'std :: malloc'?) – Mat
這聽起來像你不包括聲明malloc函數的stdlib.h。 –