模板专业化不满足我的需要

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;
};