簡體   English   中英

如何使用結構體、typedef 和模板?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM