可能重複:
Determine if Type is a pointer in a template functionC++模板類型是否爲指針或不
我正在尋找一種方法來確定一個模板是否是一個指針或不編譯時間。因爲當T不是指針時,程序將無法編譯,因爲您無法刪除正常類型的變量。
template <typename T>
void delete(T &aVar)
{
// if T is a point
delete aVar;
aVar = 0;
// if T is not a point, do nothing
}
基本上,我學習到創建鏈接列表(不使用STL的list)自己。我試圖在我的列表中使用模板,因此它可以採用任何類型。當類型是一個指針時,我想通過析構函數自動刪除它(關鍵字delete)。
問題是,正如上面所寫,當我使用int而不是列表中的某個類的某個指針時,VC2010將無法編譯,因爲您無法刪除無指針變量。所以我正在尋找一種方法,如宏應該在刪除aVar時根據模板類型進行編譯或刪除
你的意思是'operator delete'或'delete_something'? 'delete'是一個關鍵字。 – Potatoswatter 2010-10-07 16:06:08
歡迎來到SO :)請使用「101010」按鈕或4空格縮進代碼將其標記爲代碼。就像我剛剛爲你做的那樣:) – 2010-10-07 16:10:42
我不明白這是什麼東西的重複?無論如何,在這種情況下可能只需要兩個重載(一個對非指針沒有任何作用)。也許這個班正在努力做太多 - 畢竟也許我不想讓班級管理我的指針? – UncleBens 2010-10-07 16:30:59