[英]How to use structs, typedef, and template?
我正在嘗試實現以下代碼,但由於typedef
不斷出現錯誤,有人可以幫忙嗎?
template<class T>
struct box{
T data;
box *link;
};
typedef box* boxPtr;
錯誤是:
Use of class template 'box' requires template arguments
寫作
template<class T>
struct box{
T data;
box *link;
typedef box<T>* boxPtr;
};
和
int main()
{
box<int>::boxPtr use_of_a_bad_idea;
}
是一種方法,但將指針類型偽裝成對象類型是內存泄漏的一個秘訣:不要將其作為經驗法則。 這是解決這個問題的最好方法。
box
是一個類模板。 這意味着無論何時實例化它都需要一個參數:
box<int> integerBox;
box<float> floatBox;
// etc
這在您嘗試使用模板類(例如box
任何地方都是必需的。 所以只指向一個box
的指針是沒有意義的。 它需要一個類型。 例如:
template <class type>
using boxptr = box<type>*;
這實際上與您的 typedef 相同,但它允許您指定基礎模板類型。
當然,如果你這樣做,你在使用指針版本時總是需要指定一個類型:
boxptr<int> integerBoxPtr;
boxptr<float> floatBoxPtr;
// etc
使用using
:
template<class T>
struct box
{
T data;
box *link;
};
template <typename T>
using boxPtr = box<T>*;
現在boxPtr<int>
與box<int>*
。
這將編譯:
template<class T>
struct Box {
T data;
Box<T> *link;
};
typedef Box<int> * BoxPTR;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.