模板专业化不满足我的需要
Template specialization does not do what I need
我是 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;
}
对于所谓的模板专业化,语法与您的代码略有不同:
template<>
struct AAA<int>
{
int second_field;
};
两件事:
1) 专业化符号是template<>
,而不是template<typename T=int>
。
2) 特化类型与非特化类型不相关。这里没有继承。 second_field
将是 仅 字段。
把这些放在一起,你需要
template<>
struct AAA<int>
{
int field;
int second_field;
};
我是 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;
}
对于所谓的模板专业化,语法与您的代码略有不同:
template<>
struct AAA<int>
{
int second_field;
};
两件事:
1) 专业化符号是template<>
,而不是template<typename T=int>
。
2) 特化类型与非特化类型不相关。这里没有继承。 second_field
将是 仅 字段。
把这些放在一起,你需要
template<>
struct AAA<int>
{
int field;
int second_field;
};