什么可以上课“奥斯卡”可能在那里做?

时间:2016-06-11 02:13:44

标签: c++

在这一行?

std::unique_ptr<Lucille<Oscar>> mBuster;

如果它是Lucille或Oscar中的任何一个,那么理解它是用于创建指向任一类类型的指针都没有问题。但有两个。发生了什么事?

3 个答案:

答案 0 :(得分:2)

这向模板类std::unique_ptr的实例声明Lucille,其中Oscar为其模板参数。

答案 1 :(得分:2)

std::unique_ptr<Lucille<Oscar>> mBuster;

创建unique_ptr LucilleOscar

很像: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>类型的值。