我们可以将用户定义的数据类型作为参数传递给模板

时间:2015-05-28 10:19:26

标签: c++

我是c +的新手,有一种方法可以将用户定义的参数传递给模板。

假设有一个模板类,如下所示:

template <Class T>
class Stack
{
    // .....
}

int main()
{
    Stack<employee>; // here employee needs to be obj of a class
}

有人可以通过示例解释或指导我谈谈这个问题。

非常感谢

2 个答案:

答案 0 :(得分:1)

C ++模板通常适用于类型,有时也适用于整数值。由于您有一个对象而不是一个类型,因此您无法将其传递给模板。

但是,您可以从C ++ 11开始使用decltype从对象向后转到其类型。例如,如果您使用了auto widget = someObject.someMethod();并且没有widget的类型可供使用,但想要std::vector个类型,则可以使用{{ 1}}创建一个包含任何类型std::vector<decltype(widget)> x;的对象的向量。

答案 1 :(得分:-2)

不,模板参数在一般情况下应该是类型名称(例如,类,结构,内置类型等)。它不能是类类型的对象。虽然在某些特殊情况下,它可以是int类型的变量/值

我建议你做一些阅读以更好地理解模板 http://www.cprogramming.com/tutorial/templates.html http://www.codeproject.com/Articles/257589/An-Idiots-Guide-to-Cplusplus-Templates-Part http://www.josuttis.com/tmplbook/