Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
模板专门化不能满足我的需要 我是C++模板中的新手。_C++_Templates_Template Specialization - Fatal编程技术网

模板专门化不能满足我的需要 我是C++模板中的新手。

模板专门化不能满足我的需要 我是C++模板中的新手。,c++,templates,template-specialization,C++,Templates,Template Specialization,我有一个模板结构AAA,它有一个名为field的字段。当有人用int调用它时,比如AAA,我希望有一个名为second\u field的附加字段。有人能告诉我如何修复这个代码吗 template<typename T> struct AAA { T field; }; template<typename T=int> struct AAA<int> { int second_field; }; int main() { AAA<

我有一个模板结构
AAA
,它有一个名为
field
的字段。当有人用int调用它时,比如
AAA
,我希望有一个名为
second\u 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;
}
模板
结构AAA
{
T场;
};
模板
结构AAA
{
int第二个_字段;
};
int main()
{
AAA广告;
ad.field=3.14;
AAA ai;
ai.第二个_字段=5;
返回0;
}

对于所谓的模板专门化,语法与代码中的略有不同:

template<>
struct AAA<int>
{
    int second_field;
};
模板
结构AAA
{
int第二个_字段;
};

对于所谓的模板专门化,语法与代码中的略有不同:

template<>
struct AAA<int>
{
    int second_field;
};
模板
结构AAA
{
int第二个_字段;
};
两件事:

1) 专业化符号是
模板
,而不是
模板

2) 专业类型与非专业类型无关。这里没有遗产<代码>第二个字段将是唯一的字段

把这些放在一起,你需要

template<>
struct AAA<int>
{
    int field;
    int second_field;
};
模板
结构AAA
{
int字段;
int第二个_字段;
};
两件事:

1) 专业化符号是
模板
,而不是
模板

2) 专业类型与非专业类型无关。这里没有遗产<代码>第二个字段将是唯一的字段

把这些放在一起,你需要

template<>
struct AAA<int>
{
    int field;
    int second_field;
};
模板
结构AAA
{
int字段;
int第二个_字段;
};