我是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;
}发布于 2015-02-09 10:28:33
有两件事:
1)专门化符号是template<>,而不是template<typename T=int>。
2)专科类型为,而非,与非专一型无关。这里没有遗产。second_field将是唯一的字段。
把这些放在一起,你需要
template<>
struct AAA<int>
{
int field;
int second_field;
};发布于 2015-02-09 10:27:19
对于所谓的模板专门化,语法与代码中的语法略有不同:
template<>
struct AAA<int>
{
int second_field;
};https://stackoverflow.com/questions/28407503
复制相似问题