我是C ++模板的新手。
我有一个模板结构AAA
,它有一个名为field
的字段。当有人用AAA<int>
之类的int调用它时,我希望有一个名为second_field
的附加字段。有人可以告诉我如何修复此代码吗?
template<typename T>
struct AAA
{
T field;
};
template<typename T=int>
struct AAA<int>
{
int second_field;
};
int main()
{
AAA<double> ad;
ad.field=3.14;
AAA<int> ai;
ai.second_field=5;
return 0;
}
答案 0 :(得分:4)
两件事:
1)专业化符号为template<>
,而不是template<typename T=int>
。
2)与非专业类型相关的专业类型不。这里没有继承权。 second_field
将是唯一的字段。
将它们放在一起,你需要
template<>
struct AAA<int>
{
int field;
int second_field;
};
答案 1 :(得分:0)
对于所谓的模板特化,语法与代码中的语法略有不同:
template<>
struct AAA<int>
{
int second_field;
};