簡體   English   中英

“奧斯卡”課在那里可能會做什么?

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

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