[英]What could possibly cause this error when declaring an object inside a class?
[英]What's could class “Oscar” possibly be doing there?
在這條線上?
std::unique_ptr<Lucille<Oscar>> mBuster;
如果它是Lucille或Oscar之一,那么我毫無疑問地知道它是用於創建指向這兩個類類型的空指針。 但是有兩個。 這是怎么回事?
這std::unique_ptr
聲明為模板類Lucille
的實例,並以Oscar
作為模板參數。
std::unique_ptr<Lucille<Oscar>> mBuster;
它正在創建Oscar
類型的unique_ptr
Lucille
。
很像: std::vector<queue<stack>>
,它是包含堆棧的隊列的向量。
您的問題似乎僅僅是因為您還不熟悉C ++中的模板概念。
它有點類似於函數參數。 功能
foo(int value);
以int類型的值作為參數,您可以傳遞任何int值。 模板使這一點有所不同,它們不用於傳遞值,它們用於將類型作為參數傳遞。
為了使用一個簡單的例子,讓我們看一下vector
:
std::vector<int> ivector; // works on int values
ivector.push_back(5);
std::vector<std::string> strvector; // works on string values
strvector.push_back("Hello");
尖括號<>
中的部分是模板參數。 您會看到我們可以簡單地傳遞某種類型,並且所有功能都適用於該特定類型。
現在unique_ptr<type>
將要指向的類型作為模板參數。 您的std::unique_ptr<Lucille<Oscar>>
指向類型Lucille<Oscar>
。 Lucille本身就是一個模板,並且可以處理Oscar
類型的值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.