如果類也是模板,是否可以使用模板參數調用構造函數?C++調用模板類的特定模板構造函數
#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;
}
編輯:所以我想打電話給一個特定的模板的構造函數的唯一方法是用鑄造paramterers打電話給你想要的模板類型:
#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;
}
//這個輸出: 浮動 double
edit2:但是構造函數模板參數不是構造函數參數本身的一部分會發生什麼?
template <class B, class C>
Class(B arg) { /* how do you specify ?? C */ }
請注意,你的構造應該能夠推斷出你傳遞給他的參數的類型,而無需顯式地指定它的參數。 – ereOn 2011-06-15 12:09:41
你能否給這個問題添加一些標點符號?我不知道如何解析它! – juanchopanza 2011-06-15 12:15:48
[this]的可能重複(http://stackoverflow.com/questions/2786946/c-invoke-explicit-template-constructor)。請注意,作爲模板的外部類是無關緊要的。 – 2011-06-15 12:28:59