【发布时间】:2011-09-15 11:45:17
【问题描述】:
如果类也是模板,是否可以使用模板参数调用构造函数?
#include <stdio.h>
#include <iostream>
template <class A>
struct Class
{
template <class B>
Class(B arg) { std::cout << arg << std::endl; }
};
int main()
{
Class<int> c<float>(1.0f);
Class<int>* ptr = new Class<int><float>(2.0f);
return 0;
}
编辑:所以我想调用特定模板构造函数的唯一方法是使用您想要的模板类型来调用它:
#include <stdio.h>
#include <iostream>
template <class A>
struct Class
{
template <class B>
Class(B arg) { std::cout << arg << std::endl; }
Class(double arg) { std::cout << "double" << std::endl; }
Class(float arg) { std::cout << "float" << std::endl; }
};
int main()
{
Class<int> c(1.0f);
Class<int>* ptr = new Class<int>((double)2.0f);
return 0;
}
// 这个输出: 漂浮 双重
edit2:但是不属于构造函数参数本身的构造函数模板参数会发生什么?
template <class B, class C>
Class(B arg) { /* how do you specify ?? C */ }
【问题讨论】:
-
请注意,您的构造函数应该能够推断您传递给他的参数的类型,而无需明确指定。
-
您能在问题中添加一些标点符号吗?我不知道如何解析它!
-
this 的可能副本。请注意,作为模板的外部类是无关紧要的。
-
我认为 edit2 值得提出他自己的问题。 stackoverflow.com/questions/6358882/…
标签: c++ templates constructor