在这一行?
std::unique_ptr<Lucille<Oscar>> mBuster;
如果它是Lucille或Oscar中的任何一个,那么理解它是用于创建指向任一类类型的空指针都没有问题。但有两个。发生了什么事?
答案 0 :(得分:2)
这向模板类std::unique_ptr
的实例声明Lucille
,其中Oscar
为其模板参数。
答案 1 :(得分:2)
std::unique_ptr<Lucille<Oscar>> mBuster;
创建unique_ptr
Lucille
类Oscar
。
很像:std::vector<queue<stack>>
,它是包含堆栈的队列的向量。
答案 2 :(得分:2)
您的问题似乎只是您不熟悉C ++中的模板概念。
它与功能参数有些相似。功能
visiableRect
将int类型的值作为参数,您可以传递任何int值。模板使它有点不同,它们不用于传递值,它们用于将类型作为参数传递。
要使用一些更简单的示例,让我们看一下foo(int value);
:
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本身就是一个模板,可以处理Lucille<Oscar>
类型的值。